Я использую React Storybook (https://github.com/storybooks/storybook/tree/next/app/react) для написания историй для моих компонентов пользовательского интерфейса, и я использую аддон knobs (https://github.com/storybooks/storybook/tree/next/addons/knobs) для создания редактируемых реквизитов в реальном времени ...
Мое приложение написано с использованием потоковых типов, поэтому мои реквизиты являются типами, я определил этот тип для работы с моей темой:
export type BoxModel =
| [ThemeSpacing | 0]
| [ThemeSpacing | 0, ThemeSpacing | 0]
| [ThemeSpacing | 0, ThemeSpacing | 0, ThemeSpacing | 0]
| [ThemeSpacing | 0, ThemeSpacing | 0, ThemeSpacing | 0, ThemeSpacing | 0];
так что идея в том, что я могу определить отступ или маржу для компонента, используя массив значений моей темы
это моя тема:
spacing: {
xxSmall: '2px',
xSmall: '4px',
small: '8px',
medium: '12px',
larger: '16px',
large: '24px',
xLarge: '32px',
xxLarge: '48px',
},
реквизиты моего компонента (несколько из них)
export type LinkStyleProps = {
theme?: Theme,
padding?: BoxModel,
margin?: BoxModel,
};
Таким образом, я могу в основном определить margin и padding для моего компонента, используя массив, подобный ['small', 'medium', 'xsmall']
и т. Д., Очень похоже на сокращение css
Есть ли способ создать Knob, который может иметь этот массив и иметь возможность выбора каждого поля с помощью выбора?