UNPKG

@wener/console

Version:
183 lines (182 loc) 7.79 kB
function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _object_spread(target) { for(var i = 1; i < arguments.length; i++){ var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function(key) { _define_property(target, key, source[key]); }); } return target; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _object_spread_props(target, source) { source = source != null ? source : {}; if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _object_without_properties(source, excluded) { if (source == null) return {}; var target = {}, sourceKeys, key, i; if (typeof Reflect !== "undefined" && Reflect.ownKeys) { sourceKeys = Reflect.ownKeys(source); for(i = 0; i < sourceKeys.length; i++){ key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } return target; } target = _object_without_properties_loose(source, excluded); if (Object.getOwnPropertySymbols) { sourceKeys = Object.getOwnPropertySymbols(source); for(i = 0; i < sourceKeys.length; i++){ key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _object_without_properties_loose(source, excluded) { if (source == null) return {}; var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i; for(i = 0; i < sourceKeys.length; i++){ key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } return target; } import { Tabs as BaseTabs } from '@base-ui/react/tabs'; import { cn } from '@wener/console'; import { flexRender } from '@wener/reaction'; (function(Tabs) { var List = function(_0) { var tabs = _0.tabs, _0_variant = _0.variant, variant = _0_variant === void 0 ? 'lift' : _0_variant, children = _0.children, title = _0.title, action = _0.action, className = _0.className, props = _object_without_properties(_0, [ "tabs", "variant", "children", "title", "action", "className" ]); var tabsWithKeys = tabs.map(function(tab, index) { var _tab_key; return _object_spread_props(_object_spread({}, tab), { key: (_tab_key = tab.key) !== null && _tab_key !== void 0 ? _tab_key : String(index) }); }); return /*#__PURE__*/ React.createElement(BaseTabs.List, _object_spread({ className: cn('tabs flex-wrap', { box: 'tabs-box', border: 'tabs-border', lift: 'tabs-lift' }[variant], className) }, props), variant === 'lift' && (title || action) && /*#__PURE__*/ React.createElement("div", { className: "border-color flex h-full items-center self-end px-2", style: { borderBottomWidth: 'var(--tab-border,1px)', height: 'var(--tab-height)' } }, title && /*#__PURE__*/ React.createElement("h3", { className: "text-lg font-medium" }, title)), children, tabsWithKeys.map(function(tab) { return /*#__PURE__*/ React.createElement(BaseTabs.Tab, { key: tab.key, value: tab.key, disabled: tab.disabled, className: cn('tab', 'data-[selected]:tab-active', 'data-[disabled]:tab-disabled') }, tab.icon && flexRender(tab.icon, {}), tab.label); }), variant === 'lift' && (title || action) && /*#__PURE__*/ React.createElement("div", { className: "border-color flex-1 border-b", style: { borderBottomWidth: 'var(--tab-border,1px)' } }), variant === 'lift' && action && /*#__PURE__*/ React.createElement("div", { className: "border-color flex items-center self-stretch border-b px-2 pr-1", style: { borderBottomWidth: 'var(--tab-border,1px)', height: 'var(--tab-height)' } }, action)); }; Tabs.Composite = function(param) { var tabs = param.tabs, activeTab = param.activeTab, onTabChange = param.onTabChange, defaultTab = param.defaultTab, variant = param.variant, className = param.className, title = param.title, action = param.action, scrollable = param.scrollable; var _tabsWithKeys_; var tabsWithKeys = tabs.map(function(tab, index) { var _tab_key; return _object_spread_props(_object_spread({}, tab), { key: (_tab_key = tab.key) !== null && _tab_key !== void 0 ? _tab_key : String(index) }); }); var firstTab = ((_tabsWithKeys_ = tabsWithKeys[0]) === null || _tabsWithKeys_ === void 0 ? void 0 : _tabsWithKeys_.key) || ''; var defaultValue = defaultTab || firstTab; var content = /*#__PURE__*/ React.createElement(React.Fragment, null, tabsWithKeys.map(function(tab) { return /*#__PURE__*/ React.createElement(BaseTabs.Panel, { key: tab.key, value: tab.key, className: cn('flex-1 overflow-auto data-[hidden]:hidden', scrollable && 'h-full') }, tab.content); })); if (scrollable) { content = /*#__PURE__*/ React.createElement("main", { className: 'relative flex-1' }, /*#__PURE__*/ React.createElement("div", { className: '@container absolute inset-0 overflow-auto' }, content)); } return /*#__PURE__*/ React.createElement(BaseTabs.Root, { className: cn('flex flex-col', scrollable && 'h-full', className), value: activeTab, onValueChange: function(value) { onTabChange === null || onTabChange === void 0 ? void 0 : onTabChange(value); }, defaultValue: defaultValue }, /*#__PURE__*/ React.createElement(List, { tabs: tabs, variant: variant, title: title, action: action }), content); }; })(Tabs || (Tabs = {})); export var Tabs;