@dust-tt/sparkle 0.2.214 → 0.2.216
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/Breadcrumbs.d.ts +8 -7
- package/dist/cjs/index.js +34 -9
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/components/Breadcrumbs.d.ts +8 -7
- package/dist/esm/index.js +34 -9
- package/dist/esm/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/components/Breadcrumbs.tsx +101 -37
- package/src/stories/Breadcrumbs.stories.tsx +50 -2
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { ComponentType } from "react";
|
|
2
2
|
import React from "react";
|
|
3
|
+
type BreadcrumbItem = {
|
|
4
|
+
label: string;
|
|
5
|
+
icon?: ComponentType<{
|
|
6
|
+
className?: string;
|
|
7
|
+
}>;
|
|
8
|
+
href?: string;
|
|
9
|
+
};
|
|
3
10
|
type BreadcrumbProps = {
|
|
4
|
-
items:
|
|
5
|
-
label: string;
|
|
6
|
-
icon?: ComponentType<{
|
|
7
|
-
className?: string;
|
|
8
|
-
}>;
|
|
9
|
-
href?: string;
|
|
10
|
-
}[];
|
|
11
|
+
items: BreadcrumbItem[];
|
|
11
12
|
};
|
|
12
13
|
export declare function Breadcrumbs({ items }: BreadcrumbProps): React.JSX.Element;
|
|
13
14
|
export {};
|
package/dist/cjs/index.js
CHANGED
|
@@ -129182,18 +129182,43 @@ DataTable.Caption = function Caption(_a) {
|
|
|
129182
129182
|
return (React.createElement("caption", __assign({ className: className }, props), children));
|
|
129183
129183
|
};
|
|
129184
129184
|
|
|
129185
|
+
var LABEL_TRUNCATE_LENGTH_MIDDLE = 15;
|
|
129186
|
+
var LABEL_TRUNCATE_LENGTH_END = 30;
|
|
129187
|
+
var ELLIPSIS_STRING = "...";
|
|
129185
129188
|
function Breadcrumbs(_a) {
|
|
129186
129189
|
var items = _a.items;
|
|
129187
129190
|
var components = React.useContext(SparkleContext).components;
|
|
129188
|
-
var
|
|
129189
|
-
|
|
129190
|
-
|
|
129191
|
-
|
|
129192
|
-
|
|
129193
|
-
|
|
129194
|
-
|
|
129195
|
-
|
|
129196
|
-
|
|
129191
|
+
var _b = items.reduce(function (acc, item, index) {
|
|
129192
|
+
if (items.length <= 5 || index < 2 || index >= items.length - 2) {
|
|
129193
|
+
acc.itemsShown.push(item);
|
|
129194
|
+
}
|
|
129195
|
+
else if (index === 2) {
|
|
129196
|
+
acc.itemsShown.push({ label: ELLIPSIS_STRING });
|
|
129197
|
+
}
|
|
129198
|
+
else {
|
|
129199
|
+
acc.itemsHidden.push(item);
|
|
129200
|
+
}
|
|
129201
|
+
return acc;
|
|
129202
|
+
}, { itemsShown: [], itemsHidden: [] }), itemsShown = _b.itemsShown, itemsHidden = _b.itemsHidden;
|
|
129203
|
+
return (React.createElement("div", { className: "gap-2 s-flex s-flex-row s-items-center" }, itemsShown.map(function (item, index) {
|
|
129204
|
+
return (React.createElement("div", { key: "breadcrumbs-".concat(index), className: "s-flex s-flex-row s-items-center s-gap-1" },
|
|
129205
|
+
React.createElement(Icon, { visual: item.icon, className: "s-text-brand" }),
|
|
129206
|
+
item.label === ELLIPSIS_STRING ? (React.createElement(DropdownMenu, null,
|
|
129207
|
+
React.createElement(DropdownMenu.Button, null,
|
|
129208
|
+
"$",
|
|
129209
|
+
ELLIPSIS_STRING),
|
|
129210
|
+
React.createElement(DropdownMenu.Items, { origin: "topLeft" }, itemsHidden.map(function (item, index) { return (React.createElement(DropdownMenu.Item, { key: "breadcrumbs-hidden-".concat(index), icon: item.icon, label: item.label }, getLinkForItem(item, false, components.link))); })))) : (React.createElement("div", null, getLinkForItem(item, index === itemsShown.length - 1, components.link))),
|
|
129211
|
+
index === itemsShown.length - 1 ? null : (React.createElement(SvgChevronRight$1, { className: "s-text-element-500" }))));
|
|
129212
|
+
})));
|
|
129213
|
+
}
|
|
129214
|
+
function getLinkForItem(item, isLast, link) {
|
|
129215
|
+
var Link = item.href ? link : noHrefLink;
|
|
129216
|
+
return (React.createElement(Link, { href: item.href || "#", className: isLast ? "s-text-element-900" : "s-text-element-700" }, isLast
|
|
129217
|
+
? truncateWithTooltip(item.label, LABEL_TRUNCATE_LENGTH_END)
|
|
129218
|
+
: truncateWithTooltip(item.label, LABEL_TRUNCATE_LENGTH_MIDDLE)));
|
|
129219
|
+
}
|
|
129220
|
+
function truncateWithTooltip(text, length) {
|
|
129221
|
+
return text.length > length ? (React.createElement(Tooltip, { label: text, position: "below" }, "".concat(text.substring(0, length - 1), "\u2026"))) : (text);
|
|
129197
129222
|
}
|
|
129198
129223
|
|
|
129199
129224
|
var SvgLogoHorizontalColor = function (props) { return (React__namespace.createElement("svg", __assign({ xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "none", viewBox: "0 0 96 24" }, props),
|