summaryrefslogtreecommitdiffstats
path: root/browser/components/storybook/.storybook/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/storybook/.storybook/main.js')
-rw-r--r--browser/components/storybook/.storybook/main.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/browser/components/storybook/.storybook/main.js b/browser/components/storybook/.storybook/main.js
new file mode 100644
index 0000000000..625f3ab526
--- /dev/null
+++ b/browser/components/storybook/.storybook/main.js
@@ -0,0 +1,67 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+/* eslint-env node */
+
+const path = require("path");
+const projectRoot = path.resolve(__dirname, "../../../../");
+
+// ./mach environment --format json
+// topobjdir should be the build location
+
+module.exports = {
+ stories: [
+ "../stories/**/*.stories.mdx",
+ "../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)",
+ `${projectRoot}/toolkit/**/*.stories.@(js|jsx|mjs|ts|tsx)`,
+ ],
+ // Additions to the staticDirs might also need to get added to
+ // MozXULElement.importCss in preview.mjs to enable auto-reloading.
+ staticDirs: [
+ `${projectRoot}/toolkit/content/widgets/`,
+ `${projectRoot}/browser/themes/shared/`,
+ ],
+ addons: [
+ "@storybook/addon-links",
+ "@storybook/addon-essentials",
+ "@storybook/addon-a11y",
+ ],
+ framework: "@storybook/web-components",
+ webpackFinal: async (config, { configType }) => {
+ // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION'
+ // You can change the configuration based on that.
+ // 'PRODUCTION' is used when building the static version of storybook.
+
+ // Make whatever fine-grained changes you need
+ config.resolve.alias.browser = `${projectRoot}/browser`;
+ config.resolve.alias.toolkit = `${projectRoot}/toolkit`;
+ config.resolve.alias[
+ "toolkit-widgets"
+ ] = `${projectRoot}/toolkit/content/widgets/`;
+
+ config.module.rules.push({
+ test: /\.ftl$/,
+ type: "asset/source",
+ });
+
+ config.module.rules.push({
+ test: /\.mjs/,
+ loader: path.resolve(__dirname, "./chrome-uri-loader.js"),
+ });
+
+ config.optimization = {
+ splitChunks: false,
+ runtimeChunk: false,
+ sideEffects: false,
+ usedExports: false,
+ concatenateModules: false,
+ minimizer: [],
+ };
+
+ // Return the altered config
+ return config;
+ },
+ core: {
+ builder: "webpack5",
+ },
+};