@dust-tt/sparkle 0.2.97 → 0.2.98-pr
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Tab.d.ts +29 -13
- package/dist/cjs/index.js +26 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/components/Tab.d.ts +29 -13
- package/dist/esm/index.js +26 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,19 +1,35 @@
|
|
|
1
1
|
import React, { ComponentType, MouseEvent } from "react";
|
|
2
|
+
type TabType = {
|
|
3
|
+
label: string;
|
|
4
|
+
id?: string;
|
|
5
|
+
hideLabel?: boolean;
|
|
6
|
+
current: boolean;
|
|
7
|
+
sizing?: "hug" | "expand";
|
|
8
|
+
icon?: ComponentType<{
|
|
9
|
+
className?: string;
|
|
10
|
+
}>;
|
|
11
|
+
hasSeparator?: boolean;
|
|
12
|
+
} & ({
|
|
13
|
+
onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;
|
|
14
|
+
href?: never;
|
|
15
|
+
} | {
|
|
16
|
+
onClick?: never;
|
|
17
|
+
href: string;
|
|
18
|
+
});
|
|
2
19
|
type TabProps = {
|
|
3
20
|
variant?: "default" | "stepper";
|
|
4
|
-
tabs: Array<
|
|
5
|
-
|
|
6
|
-
hideLabel?: boolean;
|
|
7
|
-
current: boolean;
|
|
8
|
-
sizing?: "hug" | "expand";
|
|
9
|
-
icon?: ComponentType<{
|
|
10
|
-
className?: string;
|
|
11
|
-
}>;
|
|
12
|
-
href?: string;
|
|
13
|
-
hasSeparator?: boolean;
|
|
14
|
-
}>;
|
|
15
|
-
onTabClick?: (tabName: string, event: MouseEvent<HTMLAnchorElement>) => void;
|
|
21
|
+
tabs: Array<TabType>;
|
|
22
|
+
setCurrentTab?: (tabId: string, e: MouseEvent<HTMLAnchorElement>) => void;
|
|
16
23
|
className?: string;
|
|
17
24
|
};
|
|
18
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Tab component displaying a list of tabs.
|
|
27
|
+
*
|
|
28
|
+
* Tab click action is specified:
|
|
29
|
+
* - either per tab, by providing either an href or an onClick handler in tab
|
|
30
|
+
* data (mutually exclusive);
|
|
31
|
+
* - or globally, by providing a setCurrentTab function.
|
|
32
|
+
* Both per-tab and global actions can be set, the per-tab action taking precedence.
|
|
33
|
+
*/
|
|
34
|
+
export declare function Tab({ variant, tabs, setCurrentTab, className, }: TabProps): React.JSX.Element;
|
|
19
35
|
export {};
|
package/dist/esm/index.js
CHANGED
|
@@ -32077,12 +32077,21 @@ var tabSizingClasses = {
|
|
|
32077
32077
|
hug: "",
|
|
32078
32078
|
expand: "s-flex-1",
|
|
32079
32079
|
};
|
|
32080
|
+
/**
|
|
32081
|
+
* Tab component displaying a list of tabs.
|
|
32082
|
+
*
|
|
32083
|
+
* Tab click action is specified:
|
|
32084
|
+
* - either per tab, by providing either an href or an onClick handler in tab
|
|
32085
|
+
* data (mutually exclusive);
|
|
32086
|
+
* - or globally, by providing a setCurrentTab function.
|
|
32087
|
+
* Both per-tab and global actions can be set, the per-tab action taking precedence.
|
|
32088
|
+
*/
|
|
32080
32089
|
function Tab(_a) {
|
|
32081
|
-
var _b = _a.variant, variant = _b === void 0 ? "default" : _b, tabs = _a.tabs,
|
|
32090
|
+
var _b = _a.variant, variant = _b === void 0 ? "default" : _b, tabs = _a.tabs, setCurrentTab = _a.setCurrentTab, _c = _a.className, className = _c === void 0 ? "" : _c;
|
|
32082
32091
|
var components = React__default.useContext(SparkleContext).components;
|
|
32083
32092
|
var renderTabs = function () {
|
|
32084
32093
|
return tabs.map(function (tab, i) {
|
|
32085
|
-
var _a, _b, _c, _d;
|
|
32094
|
+
var _a, _b, _c, _d, _e;
|
|
32086
32095
|
var tabStateClasses = variant === "stepper"
|
|
32087
32096
|
? tab.current
|
|
32088
32097
|
? tabClasses.stepperSelected
|
|
@@ -32104,19 +32113,29 @@ function Tab(_a) {
|
|
|
32104
32113
|
var Link = tab.href
|
|
32105
32114
|
? components.link
|
|
32106
32115
|
: noHrefLink;
|
|
32107
|
-
|
|
32116
|
+
// precedence on href and onClick (mutually exclusive), then setCurrentTab
|
|
32117
|
+
var setCurrentTabFn = function (e) {
|
|
32118
|
+
if (!tab.id) {
|
|
32119
|
+
throw new Error("Tab id is required to use setCurrentTab");
|
|
32120
|
+
}
|
|
32121
|
+
setCurrentTab === null || setCurrentTab === void 0 ? void 0 : setCurrentTab(tab.id, e);
|
|
32122
|
+
};
|
|
32123
|
+
var onClickAction = tab.href
|
|
32124
|
+
? undefined
|
|
32125
|
+
: (_a = tab.onClick) !== null && _a !== void 0 ? _a : setCurrentTabFn;
|
|
32126
|
+
var content = (React__default.createElement(Link, { key: tab.label, className: finalTabClasses, "aria-current": tab.current ? "page" : undefined, onClick: onClickAction, href: tab.href || "#" },
|
|
32108
32127
|
React__default.createElement("div", { className: tab.current
|
|
32109
32128
|
? "s-flex s-gap-x-2"
|
|
32110
32129
|
: "s-flex s-gap-x-2 s-transition s-duration-300 s-ease-out" },
|
|
32111
|
-
tab.icon && (React__default.createElement(Icon, { visual: tab.icon, className: finalIconClasses, size: "sm" })), (
|
|
32130
|
+
tab.icon && (React__default.createElement(Icon, { visual: tab.icon, className: finalIconClasses, size: "sm" })), (_b = tab.hideLabel) !== null && _b !== void 0 ? _b : tab.label,
|
|
32112
32131
|
variant === "stepper" && i < tabs.length - 1 && (React__default.createElement(Icon, { visual: SvgChevronRight$1, className: "s-mx-2 s-text-element-500", size: "sm" })))));
|
|
32113
32132
|
return tab.hideLabel ? (tab.label ? (React__default.createElement(React__default.Fragment, { key: "tab-".concat(i) },
|
|
32114
|
-
React__default.createElement("div", { className: tabSizingClasses[(
|
|
32133
|
+
React__default.createElement("div", { className: tabSizingClasses[(_c = tab.sizing) !== null && _c !== void 0 ? _c : "hug"] },
|
|
32115
32134
|
React__default.createElement(Tooltip, { label: tab.label }, content)),
|
|
32116
32135
|
tab.hasSeparator && (React__default.createElement("div", { className: "s-flex s-h-full s-grow", key: "sep-".concat(i) })))) : (React__default.createElement(React__default.Fragment, { key: "tab-".concat(i) },
|
|
32117
|
-
React__default.createElement("div", { className: tabSizingClasses[(_c = tab.sizing) !== null && _c !== void 0 ? _c : "hug"] }, content),
|
|
32118
|
-
tab.hasSeparator && (React__default.createElement("div", { className: "s-flex s-h-full s-grow", key: "sep-".concat(i) }))))) : (React__default.createElement(React__default.Fragment, { key: "tab-".concat(i) },
|
|
32119
32136
|
React__default.createElement("div", { className: tabSizingClasses[(_d = tab.sizing) !== null && _d !== void 0 ? _d : "hug"] }, content),
|
|
32137
|
+
tab.hasSeparator && (React__default.createElement("div", { className: "s-flex s-h-full s-grow", key: "sep-".concat(i) }))))) : (React__default.createElement(React__default.Fragment, { key: "tab-".concat(i) },
|
|
32138
|
+
React__default.createElement("div", { className: tabSizingClasses[(_e = tab.sizing) !== null && _e !== void 0 ? _e : "hug"] }, content),
|
|
32120
32139
|
tab.hasSeparator && (React__default.createElement("div", { className: "s-flex s-h-full s-grow", key: "sep-".concat(i) }))));
|
|
32121
32140
|
});
|
|
32122
32141
|
};
|