import React, { useState, useContext } from 'react' import { ModalContext } from '@freesewing/react/context/Modal' import { ModalWrapper } from '@freesewing/react/components/Modal' import { KioskIcon } from '@freesewing/react/components/Icon' /** * FreeSewing Tabs component, typically used for dev examples * * @param {string} tabs - The list of tabs * @param {number} active - The nr of the active tab * @param {array} children - Content to render within the tabs * @param {bool} withModal - Set to true to load tab content in a modal window when kiosk icon is clicked */ export const Tabs = ({ tabs = '', active = 0, children, withModal = false }) => { const { setModal } = useContext(ModalContext) // Keep active tab in state const [activeTab, setActiveTab] = useState(active) /* * Parse tab list * Comma-seperated tabs passed as a string are how it works in MDX */ const tablist = Array.isArray(tabs) ? tabs : tabs.split(',').map((tab) => tab.trim()) if (!tablist) return null // Pass down activeTab and tabId for conditional rendering const childrenWithTabSetter = children.map((child, tabId) => React.cloneElement(child, { activeTab, tabId, key: tabId }) ) return (