UNPKG

@redocly/theme

Version:

Shared UI components lib

79 lines (76 loc) 3.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TabContent = exports.TabList = void 0; exports.Tabs = Tabs; const react_1 = __importDefault(require("react")); const styled_components_1 = __importDefault(require("styled-components")); const Tab_1 = require("../../../markdoc/components/Tabs/Tab"); const hooks_1 = require("../../../core/hooks"); function Tabs({ children, className }) { var _a, _b; const childrenArray = react_1.default.Children.toArray(children); const initialTab = (_b = (_a = childrenArray[0]) === null || _a === void 0 ? void 0 : _a.props.label) !== null && _b !== void 0 ? _b : ''; const { activeTab, setTabRef, onTabClick, handleKeyboard, getTabId } = (0, hooks_1.useTabs)({ initialTab, totalTabs: childrenArray.length, }); return (react_1.default.createElement(TabsContainer, { "data-component-name": "Markdoc/Tabs/Tabs", className: className }, react_1.default.createElement(exports.TabList, { role: "tablist" }, childrenArray.map((child, index) => { const { label, onClick } = child.props; const tabId = getTabId(label, index); return (react_1.default.createElement(Tab_1.Tab, { key: `key-${tabId}`, tabId: tabId, label: label, isActive: activeTab === label, setRef: (el) => setTabRef(el, index), onKeyDown: (event) => handleKeyboard(event, index), onClick: () => { onTabClick(label); onClick === null || onClick === void 0 ? void 0 : onClick(); } })); })), childrenArray.map((child, index) => { const { label } = child.props; const tabId = getTabId(label, index); return label === activeTab ? (react_1.default.createElement(exports.TabContent, { key: `content-${tabId}`, id: `panel-${tabId}`, "aria-labelledby": `tab-${tabId}`, tabIndex: 0, role: "tabpanel" }, child.props.children)) : null; }))); } const TabsContainer = styled_components_1.default.div ` color: var(--md-tabs-container-text-color); font-size: var(--md-tabs-container-font-size); font-family: var(--md-tabs-container-font-family); font-style: var(--md-tabs-container-font-style); font-weight: var(--md-tabs-container-font-weight); background-color: var(--md-tabs-container-bg-color); margin: var(--md-tabs-container-margin); padding: var(--md-tabs-container-padding); border: var(--md-tabs-container-border); ol[class^='Tabs__TabList'] { margin: 0; padding: 0; } `; exports.TabList = styled_components_1.default.ul ` && { padding: var(--md-tabs-padding); margin-block-end: 0; border: var(--md-tabs-border); border-width: var(--md-tabs-border-width); margin: 0; & > li:first-child { margin-bottom: 0px; } li[class^='Tab__TabItem'] { margin: var(--md-tabs-tab-margin); } } `; exports.TabContent = styled_components_1.default.div ` color: var(--md-tabs-content-text-color); font-size: var(--md-tabs-content-font-size); font-family: var(--md-tabs-content-font-family); font-style: var(--md-tabs-content-font-style); font-weight: var(--md-tabs-content-font-weight); background-color: var(--md-tabs-content-bg-color); margin: var(--md-tabs-content-margin); padding: var(--md-tabs-content-padding); border: var(--md-tabs-content-border); `; //# sourceMappingURL=Tabs.js.map