@wener/console
Version:
Base console UI toolkit
183 lines (182 loc) • 7.79 kB
JavaScript
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;