@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/esm/index.js
CHANGED
|
@@ -129162,18 +129162,43 @@ DataTable.Caption = function Caption(_a) {
|
|
|
129162
129162
|
return (React__default.createElement("caption", __assign({ className: className }, props), children));
|
|
129163
129163
|
};
|
|
129164
129164
|
|
|
129165
|
+
var LABEL_TRUNCATE_LENGTH_MIDDLE = 15;
|
|
129166
|
+
var LABEL_TRUNCATE_LENGTH_END = 30;
|
|
129167
|
+
var ELLIPSIS_STRING = "...";
|
|
129165
129168
|
function Breadcrumbs(_a) {
|
|
129166
129169
|
var items = _a.items;
|
|
129167
129170
|
var components = React__default.useContext(SparkleContext).components;
|
|
129168
|
-
var
|
|
129169
|
-
|
|
129170
|
-
|
|
129171
|
-
|
|
129172
|
-
|
|
129173
|
-
|
|
129174
|
-
|
|
129175
|
-
|
|
129176
|
-
|
|
129171
|
+
var _b = items.reduce(function (acc, item, index) {
|
|
129172
|
+
if (items.length <= 5 || index < 2 || index >= items.length - 2) {
|
|
129173
|
+
acc.itemsShown.push(item);
|
|
129174
|
+
}
|
|
129175
|
+
else if (index === 2) {
|
|
129176
|
+
acc.itemsShown.push({ label: ELLIPSIS_STRING });
|
|
129177
|
+
}
|
|
129178
|
+
else {
|
|
129179
|
+
acc.itemsHidden.push(item);
|
|
129180
|
+
}
|
|
129181
|
+
return acc;
|
|
129182
|
+
}, { itemsShown: [], itemsHidden: [] }), itemsShown = _b.itemsShown, itemsHidden = _b.itemsHidden;
|
|
129183
|
+
return (React__default.createElement("div", { className: "gap-2 s-flex s-flex-row s-items-center" }, itemsShown.map(function (item, index) {
|
|
129184
|
+
return (React__default.createElement("div", { key: "breadcrumbs-".concat(index), className: "s-flex s-flex-row s-items-center s-gap-1" },
|
|
129185
|
+
React__default.createElement(Icon, { visual: item.icon, className: "s-text-brand" }),
|
|
129186
|
+
item.label === ELLIPSIS_STRING ? (React__default.createElement(DropdownMenu, null,
|
|
129187
|
+
React__default.createElement(DropdownMenu.Button, null,
|
|
129188
|
+
"$",
|
|
129189
|
+
ELLIPSIS_STRING),
|
|
129190
|
+
React__default.createElement(DropdownMenu.Items, { origin: "topLeft" }, itemsHidden.map(function (item, index) { return (React__default.createElement(DropdownMenu.Item, { key: "breadcrumbs-hidden-".concat(index), icon: item.icon, label: item.label }, getLinkForItem(item, false, components.link))); })))) : (React__default.createElement("div", null, getLinkForItem(item, index === itemsShown.length - 1, components.link))),
|
|
129191
|
+
index === itemsShown.length - 1 ? null : (React__default.createElement(SvgChevronRight$1, { className: "s-text-element-500" }))));
|
|
129192
|
+
})));
|
|
129193
|
+
}
|
|
129194
|
+
function getLinkForItem(item, isLast, link) {
|
|
129195
|
+
var Link = item.href ? link : noHrefLink;
|
|
129196
|
+
return (React__default.createElement(Link, { href: item.href || "#", className: isLast ? "s-text-element-900" : "s-text-element-700" }, isLast
|
|
129197
|
+
? truncateWithTooltip(item.label, LABEL_TRUNCATE_LENGTH_END)
|
|
129198
|
+
: truncateWithTooltip(item.label, LABEL_TRUNCATE_LENGTH_MIDDLE)));
|
|
129199
|
+
}
|
|
129200
|
+
function truncateWithTooltip(text, length) {
|
|
129201
|
+
return text.length > length ? (React__default.createElement(Tooltip, { label: text, position: "below" }, "".concat(text.substring(0, length - 1), "\u2026"))) : (text);
|
|
129177
129202
|
}
|
|
129178
129203
|
|
|
129179
129204
|
var SvgLogoHorizontalColor = function (props) { return (React.createElement("svg", __assign({ xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "none", viewBox: "0 0 96 24" }, props),
|