@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.
@@ -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 Link = components.link;
129169
- return (React__default.createElement("div", { className: "gap-2 s-flex s-flex-row s-items-center" }, items.map(function (item, index) { return (React__default.createElement("div", { key: index, className: "s-flex s-flex-row s-items-center s-gap-1" },
129170
- React__default.createElement(Icon, { visual: item.icon, className: "s-text-brand" }),
129171
- React__default.createElement("div", null, item.href ? (React__default.createElement(Link, { href: item.href, className: index === items.length - 1
129172
- ? "s-text-element-900"
129173
- : "s-text-element-700" }, item.label)) : (React__default.createElement("span", { className: index === items.length - 1
129174
- ? "s-text-element-900"
129175
- : "s-text-element-700" }, item.label))),
129176
- index === items.length - 1 ? null : (React__default.createElement(SvgChevronRight$1, { className: "s-text-element-500" })))); })));
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),