@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/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 Link = components.link;
129189
- return (React.createElement("div", { className: "gap-2 s-flex s-flex-row s-items-center" }, items.map(function (item, index) { return (React.createElement("div", { key: index, className: "s-flex s-flex-row s-items-center s-gap-1" },
129190
- React.createElement(Icon, { visual: item.icon, className: "s-text-brand" }),
129191
- React.createElement("div", null, item.href ? (React.createElement(Link, { href: item.href, className: index === items.length - 1
129192
- ? "s-text-element-900"
129193
- : "s-text-element-700" }, item.label)) : (React.createElement("span", { className: index === items.length - 1
129194
- ? "s-text-element-900"
129195
- : "s-text-element-700" }, item.label))),
129196
- index === items.length - 1 ? null : (React.createElement(SvgChevronRight$1, { className: "s-text-element-500" })))); })));
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),