@dust-tt/sparkle 0.1.66-rc2 → 0.1.67

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.
@@ -11,4 +11,4 @@ export declare const ListItemExample: () => React.JSX.Element;
11
11
  export declare const ItemMD: Story;
12
12
  export declare const ItemSM: Story;
13
13
  export declare const ItemWithoutIcon: Story;
14
- export declare const ItemWithImage: Story;
14
+ export declare const ItemWithVisual: Story;
@@ -7,7 +7,7 @@ export interface DropdownMenuProps {
7
7
  export declare function DropdownMenu({ children, className }: DropdownMenuProps): React.JSX.Element;
8
8
  export declare namespace DropdownMenu {
9
9
  var Button: ({ label, type, tooltip, icon, children, tooltipPosition, className, disabled, }: DropdownButtonProps) => React.JSX.Element;
10
- var Item: ({ label, href, disabled, key, imageUrl, onClick, }: DropdownItemProps) => React.JSX.Element;
10
+ var Item: ({ label, href, disabled, key, visual, onClick, }: DropdownItemProps) => React.JSX.Element;
11
11
  var Items: ({ origin, width, children, }: DropdownItemsProps) => React.JSX.Element;
12
12
  }
13
13
  export interface DropdownButtonProps {
@@ -25,7 +25,7 @@ interface DropdownItemProps {
25
25
  href?: string;
26
26
  disabled?: boolean;
27
27
  key?: string;
28
- imageUrl?: string;
28
+ visual?: string | React.ReactNode;
29
29
  onClick?: () => void;
30
30
  }
31
31
  interface DropdownItemsProps {
@@ -7,11 +7,11 @@ type ItemProps = {
7
7
  disabled?: boolean;
8
8
  label: string;
9
9
  icon?: ComponentType;
10
- imageUrl?: string;
10
+ visual?: string | React.ReactNode;
11
11
  className?: string;
12
12
  href?: string;
13
13
  };
14
- export declare function Item({ onClick, selected, size, disabled, variant, label, icon, imageUrl, className, href, }: ItemProps): React.JSX.Element;
14
+ export declare function Item({ onClick, selected, size, disabled, variant, label, icon, visual, className, href, }: ItemProps): React.JSX.Element;
15
15
  export declare namespace Item {
16
16
  var SectionHeader: ({ label }: ItemSectionHeaderProps) => React.JSX.Element;
17
17
  var List: ({ children, className }: ListItemProps) => React.JSX.Element;
package/dist/esm/index.js CHANGED
@@ -500,18 +500,93 @@ function Tab(_a) {
500
500
  return tab.hideLabel ? (tab.label ? (React__default.createElement(React__default.Fragment, null,
501
501
  React__default.createElement("div", { key: "tab-".concat(i) },
502
502
  React__default.createElement(Tooltip, { label: tab.label }, content)),
503
- tab.hasSeparator && React__default.createElement("div", { className: "s-flex s-h-full s-grow" }))) : (React__default.createElement(React__default.Fragment, null,
503
+ tab.hasSeparator && (React__default.createElement("div", { className: "s-flex s-h-full s-grow", key: "sep-".concat(i) })))) : (React__default.createElement(React__default.Fragment, null,
504
504
  React__default.createElement("div", { key: "tab-".concat(i) }, content),
505
- tab.hasSeparator && React__default.createElement("div", { className: "s-flex s-h-full s-grow" })))) : (React__default.createElement(React__default.Fragment, null,
505
+ tab.hasSeparator && (React__default.createElement("div", { className: "s-flex s-h-full s-grow", key: "sep-".concat(i) }))))) : (React__default.createElement(React__default.Fragment, null,
506
506
  React__default.createElement("div", { key: "tab-".concat(i) }, content),
507
- tab.hasSeparator && React__default.createElement("div", { className: "s-flex s-h-full s-grow" })));
507
+ tab.hasSeparator && (React__default.createElement("div", { className: "s-flex s-h-full s-grow", key: "sep-".concat(i) }))));
508
508
  });
509
509
  };
510
510
  return (React__default.createElement("div", { className: "s-border-b s-border-structure-200 dark:s-border-structure-200-dark" },
511
511
  React__default.createElement("nav", { className: "-s-mb-px s-flex s-space-x-0", "aria-label": "Tabs" }, renderTabs())));
512
512
  }
513
513
 
514
+ var colors = [
515
+ "s-bg-red-300",
516
+ "s-bg-orange-300",
517
+ "s-bg-amber-300",
518
+ "s-bg-yellow-300",
519
+ "s-bg-lime-300",
520
+ "s-bg-green-300",
521
+ "s-bg-emerald-300",
522
+ "s-bg-teal-300",
523
+ "s-bg-cyan-300",
524
+ "s-bg-sky-300",
525
+ "s-bg-blue-300",
526
+ "s-bg-indigo-300",
527
+ "s-bg-violet-300",
528
+ "s-bg-purple-300",
529
+ "s-bg-fuchsia-300",
530
+ "s-bg-rose-300",
531
+ ];
532
+ var txtColors = [
533
+ "s-text-red-700",
534
+ "s-text-orange-700",
535
+ "s-text-amber-700",
536
+ "s-text-yellow-700",
537
+ "s-text-lime-700",
538
+ "s-text-green-700",
539
+ "s-text-emerald-700",
540
+ "s-text-teal-700",
541
+ "s-text-cyan-700",
542
+ "s-text-sky-700",
543
+ "s-text-blue-700",
544
+ "s-text-indigo-700",
545
+ "s-text-violet-700",
546
+ "s-text-purple-700",
547
+ "s-text-fuchsia-700",
548
+ "s-text-rose-700",
549
+ ];
514
550
  var sizeClasses$2 = {
551
+ xs: "s-h-6 s-w-6 s-rounded-full",
552
+ sm: "s-h-10 s-w-10 s-rounded-xl",
553
+ md: "s-h-16 s-w-16 s-rounded-2xl",
554
+ lg: "s-h-36 s-w-36 s-rounded-3xl",
555
+ full: "s-h-full s-w-full",
556
+ };
557
+ var textSize = {
558
+ xs: "s-text-xs",
559
+ sm: "s-text-base",
560
+ md: "s-text-3xl",
561
+ lg: "s-text-7xl",
562
+ full: "s-text-6xl",
563
+ };
564
+ function Avatar(_a) {
565
+ var _b = _a.size, size = _b === void 0 ? "sm" : _b, name = _a.name, visual = _a.visual, onClick = _a.onClick, _c = _a.busy, busy = _c === void 0 ? false : _c;
566
+ var getColor = function (name) {
567
+ var hash = 0;
568
+ for (var i = 0; i < name.length; i++) {
569
+ hash = name.charCodeAt(i) + ((hash << 5) - hash);
570
+ }
571
+ return colors[Math.abs(hash) % colors.length];
572
+ };
573
+ var getTextVariant = function (name) {
574
+ var hash = 0;
575
+ for (var i = 0; i < name.length; i++) {
576
+ hash = name.charCodeAt(i) + ((hash << 5) - hash);
577
+ }
578
+ return txtColors[Math.abs(hash) % txtColors.length];
579
+ };
580
+ var clickableStyles = onClick && !busy
581
+ ? "s-cursor-pointer hover:s-filter hover:s-brightness-110 active:s-brightness-90 s-transition s-duration-200 s-ease-out"
582
+ : "";
583
+ var busyStyles = busy ? "s-animate-breathing s-cursor-default" : "";
584
+ var avatarClass = classNames(sizeClasses$2[size], name ? getColor(name) : "s-bg-slate-200", "s-flex s-flex-shrink-0 s-items-center s-justify-center s-overflow-hidden", clickableStyles, busyStyles);
585
+ return (React__default.createElement("div", { className: avatarClass }, typeof visual === "string" ? (React__default.createElement("img", { src: visual, alt: name, className: classNames(sizeClasses$2[size], "s-object-cover") })) : visual ? (visual) : name ? (React__default.createElement("span", { className: classNames(getTextVariant(name), textSize[size], "s-select-none s-font-medium") }, name[0].toUpperCase())) : (React__default.createElement(SvgUser$1, { className: "s-h-1/2 s-w-1/2 s-opacity-20" }) // Default icon with size and slate-900 color
586
+ )));
587
+ }
588
+
589
+ var sizeClasses$1 = {
515
590
  sm: "s-py-2 s-text-sm s-font-normal",
516
591
  md: "s-py-3 s-text-sm s-font-semibold",
517
592
  };
@@ -535,11 +610,6 @@ var iconClasses$3 = {
535
610
  },
536
611
  },
537
612
  };
538
- var imageClasses = {
539
- default: {
540
- base: "s-h-5 s-w-5 s-rounded-full",
541
- },
542
- };
543
613
  var chevronClasses$1 = {
544
614
  default: {
545
615
  base: "s-text-element-600",
@@ -610,7 +680,7 @@ var stateClassesMD = {
610
680
  };
611
681
  function Item(_a) {
612
682
  var _b, _c, _d;
613
- var onClick = _a.onClick, _e = _a.selected, selected = _e === void 0 ? false : _e, _f = _a.size, size = _f === void 0 ? "sm" : _f, _g = _a.disabled, disabled = _g === void 0 ? false : _g, _h = _a.variant, variant = _h === void 0 ? "default" : _h, label = _a.label, icon = _a.icon, imageUrl = _a.imageUrl, _j = _a.className, className = _j === void 0 ? "" : _j, href = _a.href;
683
+ var onClick = _a.onClick, _e = _a.selected, selected = _e === void 0 ? false : _e, _f = _a.size, size = _f === void 0 ? "sm" : _f, _g = _a.disabled, disabled = _g === void 0 ? false : _g, _h = _a.variant, variant = _h === void 0 ? "default" : _h, label = _a.label, icon = _a.icon, visual = _a.visual, _j = _a.className, className = _j === void 0 ? "" : _j, href = _a.href;
614
684
  var components = React__default.useContext(SparkleContext).components;
615
685
  var currentStateClasses = size === "md"
616
686
  ? selected
@@ -625,18 +695,17 @@ function Item(_a) {
625
695
  var currentChevronClasses = selected
626
696
  ? chevronClasses$1.selected
627
697
  : chevronClasses$1.default;
628
- var itemClasses = classNames(baseClasses$3, sizeClasses$2[size], disabled ? "s-cursor-default" : currentStateClasses.base, disabled ? "s-cursor-default" : (_b = currentStateClasses.dark) === null || _b === void 0 ? void 0 : _b.base, disabled ? currentStateClasses.disabled : "", !selected && !disabled ? currentStateClasses.hover : "", !selected && !disabled ? (_c = currentStateClasses.dark) === null || _c === void 0 ? void 0 : _c.hover : "", !selected && !disabled ? currentStateClasses.active : "", !selected && !disabled ? (_d = currentStateClasses.dark) === null || _d === void 0 ? void 0 : _d.active : "", className);
698
+ var itemClasses = classNames(baseClasses$3, sizeClasses$1[size], disabled ? "s-cursor-default" : currentStateClasses.base, disabled ? "s-cursor-default" : (_b = currentStateClasses.dark) === null || _b === void 0 ? void 0 : _b.base, disabled ? currentStateClasses.disabled : "", !selected && !disabled ? currentStateClasses.hover : "", !selected && !disabled ? (_c = currentStateClasses.dark) === null || _c === void 0 ? void 0 : _c.hover : "", !selected && !disabled ? currentStateClasses.active : "", !selected && !disabled ? (_d = currentStateClasses.dark) === null || _d === void 0 ? void 0 : _d.active : "", className);
629
699
  var finalIconClasses = classNames(iconBaseClasses, currentIconClasses.base, !disabled ? currentIconClasses.hover : "", // Add condition here
630
700
  currentIconClasses.dark.base, !disabled ? currentIconClasses.dark.hover : "" // Add condition here
631
701
  );
632
- var finalImageClasses = classNames(imageClasses.default.base);
633
702
  var finalCevronClasses = classNames(iconBaseClasses, "s-flex-shrink-0", size === "sm" ? "s-text-transparent" : currentChevronClasses.base, !disabled ? currentChevronClasses.hover : "", // Add condition here
634
703
  currentChevronClasses.dark.base, !disabled ? currentChevronClasses.dark.hover : "" // Add condition here
635
704
  );
636
705
  var Link = href ? components.link : noHrefLink;
637
706
  return (React__default.createElement(Link, { className: itemClasses, onClick: selected || disabled ? undefined : onClick, "aria-label": label, href: href || "#" },
638
707
  icon && React__default.createElement(Icon, { visual: icon, className: finalIconClasses }),
639
- imageUrl && (React__default.createElement("img", { src: imageUrl, className: classNames(finalImageClasses) })),
708
+ visual && React__default.createElement(Avatar, { size: "xs", visual: visual }),
640
709
  React__default.createElement("span", { className: "s-grow s-truncate" }, label),
641
710
  variant === "default" && (React__default.createElement(Icon, { visual: SvgChevronRight$1, className: finalCevronClasses, size: "sm" }))));
642
711
  }
@@ -650,7 +719,7 @@ Item.List = function (_a) {
650
719
  React__default.createElement("div", { className: "s-flex s-w-full s-flex-col" }, children)));
651
720
  };
652
721
 
653
- var sizeClasses$1 = {
722
+ var sizeClasses = {
654
723
  sm: "s-py-1.5 s-text-xs s-font-medium s-px-3",
655
724
  md: "s-py-2 s-text-sm s-font-semibold s-px-3",
656
725
  };
@@ -669,7 +738,7 @@ function Chip(_a) {
669
738
  return "s-bg-violet-100 s-border-violet-200";
670
739
  }
671
740
  })();
672
- var ChipClasses = classNames(baseClasses$2, sizeClasses$1[size], backgroundColor, className);
741
+ var ChipClasses = classNames(baseClasses$2, sizeClasses[size], backgroundColor, className);
673
742
  return (React__default.createElement("div", { className: ChipClasses, "aria-label": label },
674
743
  label && (React__default.createElement("span", { className: "s-pointer s-grow s-cursor-default s-truncate" }, label)),
675
744
  children));
@@ -31762,9 +31831,9 @@ DropdownMenu.Button = function (_a) {
31762
31831
  React__default.createElement(Icon, { visual: type === "select" ? SvgChevronUpDown$1 : SvgChevronDown$1, size: "xs", className: finalChevronClasses })))));
31763
31832
  };
31764
31833
  DropdownMenu.Item = function (_a) {
31765
- var label = _a.label, href = _a.href, disabled = _a.disabled, _b = _a.key, key = _b === void 0 ? "" : _b, imageUrl = _a.imageUrl, onClick = _a.onClick;
31834
+ var label = _a.label, href = _a.href, disabled = _a.disabled, _b = _a.key, key = _b === void 0 ? "" : _b, visual = _a.visual, onClick = _a.onClick;
31766
31835
  return (React__default.createElement(it.Item, { disabled: disabled, key: key },
31767
- React__default.createElement(Item, { variant: "dropdown", size: "md", href: href, onClick: onClick, label: label, imageUrl: imageUrl })));
31836
+ React__default.createElement(Item, { variant: "dropdown", size: "md", href: href, onClick: onClick, label: label, visual: visual })));
31768
31837
  };
31769
31838
  DropdownMenu.Items = function (_a) {
31770
31839
  var _b = _a.origin, origin = _b === void 0 ? "topRight" : _b, _c = _a.width, width = _c === void 0 ? 160 : _c, children = _a.children;
@@ -32051,81 +32120,6 @@ function IconToggleButton(_a) {
32051
32120
  return tooltip ? (React__default.createElement(Tooltip, { label: tooltip, position: tooltipPosition }, IconButtonToggleContent)) : (IconButtonToggleContent);
32052
32121
  }
32053
32122
 
32054
- var colors = [
32055
- "s-bg-red-300",
32056
- "s-bg-orange-300",
32057
- "s-bg-amber-300",
32058
- "s-bg-yellow-300",
32059
- "s-bg-lime-300",
32060
- "s-bg-green-300",
32061
- "s-bg-emerald-300",
32062
- "s-bg-teal-300",
32063
- "s-bg-cyan-300",
32064
- "s-bg-sky-300",
32065
- "s-bg-blue-300",
32066
- "s-bg-indigo-300",
32067
- "s-bg-violet-300",
32068
- "s-bg-purple-300",
32069
- "s-bg-fuchsia-300",
32070
- "s-bg-rose-300",
32071
- ];
32072
- var txtColors = [
32073
- "s-text-red-700",
32074
- "s-text-orange-700",
32075
- "s-text-amber-700",
32076
- "s-text-yellow-700",
32077
- "s-text-lime-700",
32078
- "s-text-green-700",
32079
- "s-text-emerald-700",
32080
- "s-text-teal-700",
32081
- "s-text-cyan-700",
32082
- "s-text-sky-700",
32083
- "s-text-blue-700",
32084
- "s-text-indigo-700",
32085
- "s-text-violet-700",
32086
- "s-text-purple-700",
32087
- "s-text-fuchsia-700",
32088
- "s-text-rose-700",
32089
- ];
32090
- var sizeClasses = {
32091
- xs: "s-h-6 s-w-6 s-rounded-full",
32092
- sm: "s-h-10 s-w-10 s-rounded-xl",
32093
- md: "s-h-16 s-w-16 s-rounded-2xl",
32094
- lg: "s-h-36 s-w-36 s-rounded-3xl",
32095
- full: "s-h-full s-w-full",
32096
- };
32097
- var textSize = {
32098
- xs: "s-text-xs",
32099
- sm: "s-text-base",
32100
- md: "s-text-3xl",
32101
- lg: "s-text-7xl",
32102
- full: "s-text-6xl",
32103
- };
32104
- function Avatar(_a) {
32105
- var _b = _a.size, size = _b === void 0 ? "sm" : _b, name = _a.name, visual = _a.visual, onClick = _a.onClick, _c = _a.busy, busy = _c === void 0 ? false : _c;
32106
- var getColor = function (name) {
32107
- var hash = 0;
32108
- for (var i = 0; i < name.length; i++) {
32109
- hash = name.charCodeAt(i) + ((hash << 5) - hash);
32110
- }
32111
- return colors[Math.abs(hash) % colors.length];
32112
- };
32113
- var getTextVariant = function (name) {
32114
- var hash = 0;
32115
- for (var i = 0; i < name.length; i++) {
32116
- hash = name.charCodeAt(i) + ((hash << 5) - hash);
32117
- }
32118
- return txtColors[Math.abs(hash) % txtColors.length];
32119
- };
32120
- var clickableStyles = onClick && !busy
32121
- ? "s-cursor-pointer hover:s-filter hover:s-brightness-110 active:s-brightness-90 s-transition s-duration-200 s-ease-out"
32122
- : "";
32123
- var busyStyles = busy ? "s-animate-breathing s-cursor-default" : "";
32124
- var avatarClass = classNames(sizeClasses[size], name ? getColor(name) : "s-bg-slate-200", "s-flex s-flex-shrink-0 s-items-center s-justify-center s-overflow-hidden", clickableStyles, busyStyles);
32125
- return (React__default.createElement("div", { className: avatarClass }, typeof visual === "string" ? (React__default.createElement("img", { src: visual, alt: name, className: classNames(sizeClasses[size], "s-object-cover") })) : visual ? (visual) : name ? (React__default.createElement("span", { className: classNames(getTextVariant(name), textSize[size], "s-select-none s-font-medium") }, name[0].toUpperCase())) : (React__default.createElement(SvgUser$1, { className: "s-h-1/2 s-w-1/2 s-opacity-20" }) // Default icon with size and slate-900 color
32126
- )));
32127
- }
32128
-
32129
32123
  var Spinner = function (_a) {
32130
32124
  var _b = _a.size, size = _b === void 0 ? "md" : _b, _c = _a.variant, variant = _c === void 0 ? "lightGrey" : _c;
32131
32125
  var sizeClasses = {