import * as React from 'react'; import { Meta, Story } from '@storybook/react'; import { HandWaving, Sparkle, Info, Lifebuoy } from '@phosphor-icons/react'; import { Accordion, AccordionActiveColor, AccordionColor, AccordionProps, AccordionRadius, AccordionShadow, AccordionSize, AccordionTone } from '../Accordion'; import { EnhancedView, View, ViewGroup } from '../View/View'; const colors: AccordionColor[] = ['white', 'gray', 'zinc', 'slate']; const tones: AccordionTone[] = ['solid', 'light']; const activeColors: AccordionActiveColor[] = [ 'white', 'blue', 'red', 'green', 'yellow', 'purple', 'gray', 'dark', 'black', ]; const radiuses: AccordionRadius[] = ['none', 'sm', 'md', 'lg']; const sizes: AccordionSize[] = ['sm', 'md', 'lg', 'xl']; const shadows: AccordionShadow[] = ['none', 'sm', 'base', 'md', 'lg', 'xl']; const accordionItems = [ { anchor: 'item-1', header: 'What is react-craftify?', icon: , body: "react-craftify is a React component library that provides a set of accessible, reusable, and customizable components to help you build your next project. We've designed our components to be flexible and easy to use, so you can focus on what matters most: building great user experiences.", }, { anchor: 'item-2', header: 'How do I get started?', icon: , body: "Getting started with react-craftify is easy! Simply install the package using your package manager of choice, and you're ready to go. We've also included a set of Storybook stories to help you get familiar with our components and how to use them.", }, { anchor: 'item-3', header: 'How do I contribute?', icon: , body: "We're always looking for new contributors to help us improve react-craftify! If you'd like to contribute, please check out our contribution guidelines to get started. We're looking forward to working with you!", }, { anchor: 'item-4', header: 'Where can I find more information?', icon: , body: "If you'd like to learn more about react-craftify, please visit our website. You can also follow us on Twitter to stay up to date with the latest news and updates.", }, ]; const meta: Meta = { title: 'Components/Accordion', component: Accordion, argTypes: { color: { options: colors, control: { type: 'select' }, }, activeColor: { options: activeColors, control: { type: 'select' }, }, size: { options: sizes, control: { type: 'select' }, }, shadow: { options: shadows, control: { type: 'select' }, }, bordered: { control: { type: 'boolean' }, }, ref: { table: { disable: true, }, }, }, parameters: { controls: { expanded: true, sort: 'alpha' }, }, }; export default meta; const DefaultTemplate: Story = (args) => { return ( {accordionItems.map((item) => ( {item.header} {item.body} ))} ); }; export const Default = DefaultTemplate.bind({}); const ToneTemplate: Story = (args) => { const items = activeColors.map((color) => ( {tones.map((tone) => ( {accordionItems.map((item) => ( {item.header} {item.body} ))} ))} )); return {items}; }; export const Tones = ToneTemplate.bind({}); const ColorTemplate: Story = (args) => { const items = colors.map((color) => ( {accordionItems.map((item) => ( {item.header} {item.body} ))} )); return {items}; }; export const Colors = ColorTemplate.bind({}); const ActiveColorTemplate: Story = (args) => { const items = tones.map((tone) => ( {activeColors.map((color) => ( {accordionItems.map((item) => ( {item.header} {item.body} ))} ))} )); return {items}; }; export const ActiveColors = ActiveColorTemplate.bind({}); const RadiusTemplate: Story = (args) => { const items = radiuses.map((radius) => ( {accordionItems.map((item) => ( {item.header} {item.body} ))} )); return {items}; }; export const Radiuses = RadiusTemplate.bind({}); const SizeTemplate: Story = (args) => { const items = sizes.map((size) => ( {accordionItems.map((item) => ( {item.header} {item.body} ))} )); return {items}; }; export const Sizes = SizeTemplate.bind({}); const ShadowTemplate: Story = (args) => { const items = shadows.map((shadow) => ( {accordionItems.map((item) => ( {item.header} {item.body} ))} )); return {items}; }; export const Shadows = ShadowTemplate.bind({}); const BorderTemplate: Story = (args) => { return ( {accordionItems.map((item) => ( {item.header} {item.body} ))} {accordionItems.map((item) => ( {item.header} {item.body} ))} ); }; export const Borders = BorderTemplate.bind({}); const ExampleTemplate: Story = (args) => { return ( {accordionItems.map((item) => ( {item.header} {item.body} ))} {accordionItems.map((item) => ( {item.icon} {item.header} {item.body} ))} {accordionItems.map((item) => ( {item.icon} {item.header} {item.body} ))} ); }; export const Examples = ExampleTemplate.bind({});