
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
@dylandepass/franklin-storybook-addon
Advanced tools
A storybook addon for building Franklin blocks.
A storybook addon for working with Franklin projects.
npx storybook init --type html
npm install -D @dylandepass/franklin-storybook-addon
./storybook/main.js
Here we are telling storybook to expose the content in ./scripts
, ./styles
and ./icons
as static directies in storybook.
This will allow us to use styles.css
and other dependacies in our stories. We are also registering the franklin-storybook-addon
with storybook.
module.exports = {
"stories": [
"../blocks/**/*.stories.js",
"../blocks/**/*.stories.jsx",
"../blocks/**/*.stories.mdx",
],
"addons": [
"@storybook/addon-essentials",
"@dylandepass/franklin-storybook-addon"
],
"framework": "@storybook/html",
"staticDirs": [
{ from: "../scripts", to: "/scripts" },
{ from: "../styles", to: "/styles" },
{ from: "../icons", to: "/icons" }
],
};
rm -rf ./stories
styles.css
Create the file preview-head.html
inside of ./.storybook
.
Add a link to styles.css
<link rel="stylesheet" href="./styles/styles.css">
In the root of the site content store (gdrive or sharepoint). Create a folder called storybook
.
Inside the storybook
folder create a document for a block you want to use within storybook. I.E cards
Paste an example cards content block inside the document and preview it.
In order for storybook to be able to load the example block we need to set a wildcard CORS policy on it.
/.helix/headers
if one doesn't exist.Add the following rows
url | key | value |
---|---|---|
/storybook/** | access-control-allow-origin | * |
Create a stories file for each block you want to use with storybook. I recommend putting the stories file in the same folder as the block code. (I.E blocks/cards/cards.stories.js)
Here is an stories file for a cards block.
import { FranklinTemplate } from '@dylandepass/franklin-storybook-addon';
import { loadPage } from '../../scripts/scripts.js';
import decorate from './cards.js';
import style from './cards.css';
export const Cards = (args, context) => FranklinTemplate(loadPage, args, context, decorate);
Cards.parameters = {
path: '/storybook/cards.plain.html',
selector: '.cards',
index: 0,
};
Cards.storyName = 'Cards';
/**
* Default Config
*/
export default {
title: 'Cards',
parameters: {
docs: {
description: {
component: 'A block to display cards',
},
},
},
argTypes: {
blockClasses: {
options: ['light', 'dark'],
control: { type: 'radio' },
table: {
category: 'Block',
},
},
},
};
Setup argTypes
The addon supports two types of optional argTypes, sectionClasses
and blockClasses
. The option can either be mutually exclusive or not. If you want to support multiple classes at the same time you can change the control type from radio
to check
.
Any classes added to sectionClasses
will be added to the section element as well as added get added to section-metadata
in the content tab.
Any classes added to blockClasses
will be added to the block element and block heading in the content tab.
Modify scripts.js
The addon requires access to loadPage()
method from scripts.js
in order to decorate the franklin blocks correctly. You will need to update scripts.js
to export the loadPage()
method and also wrap the call to loadPage
in a check to prevent it from being called when running in storybook.
export async function loadPage() {
console.log('loading page');
await loadEager(document);
await loadLazy(document);
loadDelayed();
}
if(!window.__STORYBOOK_PREVIEW__) {
loadPage();
}
Optionally, you may also want to wrap loadBlocks
, loadHeader
and loadFooter
in loadLazy
in a check as well to prevent them from attemping to load in storybook. The franklin stoybook addon will takcare of decorating the block.
if (!window.__STORYBOOK_PREVIEW__) {
await loadBlocks(main);
}
if(!window.__STORYBOOK_PREVIEW__) {
loadHeader(doc.querySelector('header'));
loadFooter(doc.querySelector('footer'));
}
yarn start
runs babel in watch mode and starts Storybook
yarn build
build and package your addon code
FAQs
A storybook addon for building Franklin blocks.
We found that @dylandepass/franklin-storybook-addon demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.