import type { BackgroundsParam, GlobalApiBackgroundsParam } from './define_backgrounds_param.js' import type { DocsParam } from './define_docs_param.js' import type { LayoutParam } from './define_layout_param.js' import type { TestParam } from './define_test_param.js' import type { ViewportParam } from './define_viewport_param.js' import type { StorySortParam } from './story_sort.js' export type StorybookBuiltInParams = Partial & Partial & Partial & Partial & Partial & { options?: StorySortParam & Record } & Record /** * Defines parameters for Storybook stories, combining built-in parameters with custom ones. * * @param parameters - Configuration object containing both built-in Storybook parameters and custom parameters * @returns The combined parameters object * * @example * ```ts * import { defineParameters } from '@repobuddy/storybook' * * export default { * parameters: defineParameters({ * // Built-in parameters * layout: 'centered', * backgrounds: { * default: 'light', * values: [ * { name: 'light', value: '#ffffff' }, * { name: 'dark', value: '#333333' } * ] * }, * // Custom parameters * myCustomParam: { * someValue: true * } * }) * } * ``` */ export function defineParameters

>( param: P & StorybookBuiltInParams, ...rest: Array ) { return rest.reduce((acc, param) => Object.assign(acc, param), param) }