gridsmith-ui 0.2.7 → 0.2.8

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/index.d.ts CHANGED
@@ -376,10 +376,12 @@ interface StatsCardProps {
376
376
  trend?: Trend;
377
377
  icon?: IconName;
378
378
  layout?: "card" | "inline";
379
+ interactive?: boolean;
380
+ onClick?: () => void;
379
381
  children?: ReactNode;
380
382
  className?: string;
381
383
  }
382
- declare function StatsCard({ value, label, trend, icon, layout, children, className }: StatsCardProps): react_jsx_runtime.JSX.Element;
384
+ declare function StatsCard({ value, label, trend, icon, layout, interactive, onClick, children, className }: StatsCardProps): react_jsx_runtime.JSX.Element;
383
385
 
384
386
  interface DataListItem {
385
387
  label: string;
package/dist/index.js CHANGED
@@ -1761,8 +1761,9 @@ function Button({ variant = "default", size = "md", iconLeft, iconRight, loading
1761
1761
  "border-[length:var(--ds-border-width)]",
1762
1762
  "rounded-[var(--ds-radius-md)]",
1763
1763
  "shadow-[var(--ds-shadow-button)]",
1764
- "active:shadow-[var(--ds-shadow-button-pressed)] active:translate-x-px active:translate-y-px",
1765
- "transition-all duration-[var(--ds-transition-speed)] ease-[var(--ds-transition-ease)]",
1764
+ "hover:scale-[var(--ds-hover-scale)] hover:-translate-y-[var(--ds-hover-lift)]",
1765
+ "active:shadow-[var(--ds-shadow-button-pressed)] active:translate-x-[var(--ds-press-depth)] active:translate-y-[var(--ds-press-depth)]",
1766
+ "transition-all duration-[var(--ds-interactive-hover-speed)] ease-[var(--ds-interactive-hover-ease)]",
1766
1767
  "focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]",
1767
1768
  "cursor-pointer disabled:cursor-not-allowed disabled:opacity-disabled",
1768
1769
  variantStyles[variant],
@@ -81984,12 +81985,17 @@ function Skeleton({ variant = "text", lines = 3, width, height, className }) {
81984
81985
  return /* @__PURE__ */ jsx("div", { className: cn("space-y-3", className), children: Array.from({ length: lines }, (_, i) => /* @__PURE__ */ jsx(Bone, { className: cn("h-4", widths[i % widths.length]) }, i)) });
81985
81986
  }
81986
81987
  var variantStyles3 = {
81987
- default: `bg-[var(--ds-bg-surface)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)] ${GLASS_SURFACE}`,
81988
+ default: [
81989
+ `bg-[var(--ds-bg-surface)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)] ${GLASS_SURFACE}`,
81990
+ "transition-all duration-[var(--ds-ambient-hover-speed)] ease-[var(--ds-ambient-hover-ease)]",
81991
+ "hover:scale-[var(--ds-ambient-hover-scale)] hover:-translate-y-[var(--ds-ambient-hover-lift)]"
81992
+ ].join(" "),
81988
81993
  interactive: [
81989
81994
  `bg-[var(--ds-bg-surface)] cursor-pointer ${GLASS_SURFACE}`,
81990
81995
  "border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]",
81991
- "transition-all duration-[var(--ds-transition-speed)] ease-[var(--ds-transition-ease)]",
81992
- "hover:border-[var(--ds-accent-primary)] hover:shadow-[var(--ds-shadow-card),var(--ds-glass-inset)] hover:bg-[var(--ds-bg-surface-elevated)]"
81996
+ "transition-all duration-[var(--ds-interactive-hover-speed)] ease-[var(--ds-interactive-hover-ease)]",
81997
+ "hover:border-[var(--ds-accent-primary)] hover:shadow-[var(--ds-shadow-card),var(--ds-glass-inset)] hover:bg-[var(--ds-bg-surface-elevated)]",
81998
+ "hover:scale-[var(--ds-hover-scale)] hover:-translate-y-[var(--ds-hover-lift)]"
81993
81999
  ].join(" "),
81994
82000
  outline: `bg-[var(--ds-bg-surface)] border-[length:var(--ds-border-width)] border-[var(--ds-border-default)] ${GLASS_SURFACE}`,
81995
82001
  ghost: "bg-transparent border-none shadow-none"
@@ -82008,6 +82014,7 @@ function Card({ variant = "default", loading = false, selected, selectable, onSe
82008
82014
  return /* @__PURE__ */ jsxs(
82009
82015
  "div",
82010
82016
  {
82017
+ "data-card": "",
82011
82018
  role: selectable ? "button" : void 0,
82012
82019
  "aria-pressed": selectable ? !!selected : void 0,
82013
82020
  tabIndex: selectable ? 0 : void 0,
@@ -82062,7 +82069,7 @@ function CardContent({ className, children, ...props }) {
82062
82069
  function CardFooter({ className, children, ...props }) {
82063
82070
  return /* @__PURE__ */ jsx("div", { className: cn("flex items-center px-ds-5 pb-ds-4 pt-ds-2 mt-auto min-w-0", className), ...props, children });
82064
82071
  }
82065
- function StatsCard({ value, label, trend, icon, layout = "card", children, className }) {
82072
+ function StatsCard({ value, label, trend, icon, layout = "card", interactive, onClick, children, className }) {
82066
82073
  if (layout === "inline") {
82067
82074
  return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-ds-3 min-w-0", className), children: [
82068
82075
  icon && /* @__PURE__ */ jsx(Icon, { name: icon, size: 16, className: "shrink-0 text-[var(--ds-text-muted)]" }),
@@ -82071,16 +82078,36 @@ function StatsCard({ value, label, trend, icon, layout = "card", children, class
82071
82078
  trend && /* @__PURE__ */ jsx(TrendBadge, { trend })
82072
82079
  ] });
82073
82080
  }
82081
+ const isInteractive = interactive || !!onClick;
82074
82082
  return /* @__PURE__ */ jsxs(
82075
82083
  "div",
82076
82084
  {
82085
+ "data-card": "",
82077
82086
  className: cn(
82078
82087
  "flex flex-col p-ds-5",
82079
82088
  "bg-[var(--ds-bg-surface)] rounded-[var(--ds-radius-md)]",
82080
82089
  "border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]",
82090
+ isInteractive ? [
82091
+ "cursor-pointer",
82092
+ "transition-all duration-[var(--ds-interactive-hover-speed)] ease-[var(--ds-interactive-hover-ease)]",
82093
+ "hover:scale-[var(--ds-hover-scale)] hover:-translate-y-[var(--ds-hover-lift)]",
82094
+ "hover:border-[var(--ds-accent-primary)] hover:shadow-[var(--ds-shadow-card),var(--ds-glass-inset)]"
82095
+ ] : [
82096
+ "transition-all duration-[var(--ds-ambient-hover-speed)] ease-[var(--ds-ambient-hover-ease)]",
82097
+ "hover:scale-[var(--ds-ambient-hover-scale)] hover:-translate-y-[var(--ds-ambient-hover-lift)]"
82098
+ ],
82081
82099
  GLASS_SURFACE,
82082
82100
  className
82083
82101
  ),
82102
+ onClick,
82103
+ role: onClick ? "button" : void 0,
82104
+ tabIndex: onClick ? 0 : void 0,
82105
+ onKeyDown: onClick ? (e) => {
82106
+ if (e.key === "Enter" || e.key === " ") {
82107
+ e.preventDefault();
82108
+ onClick();
82109
+ }
82110
+ } : void 0,
82084
82111
  children: [
82085
82112
  /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-ds-2", children: [
82086
82113
  /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-[var(--ds-text-muted)] uppercase tracking-wider", children: label }),
@@ -93420,7 +93447,7 @@ var StackedList = forwardRef(function StackedList2({
93420
93447
  className: cn(
93421
93448
  "flex items-center gap-ds-3",
93422
93449
  item.onClick && [
93423
- "cursor-pointer transition-colors",
93450
+ "cursor-pointer transition-all duration-[var(--ds-interactive-hover-speed)] ease-[var(--ds-interactive-hover-ease)]",
93424
93451
  "hover:bg-[var(--ds-bg-muted)]",
93425
93452
  "rounded-[var(--ds-radius-md)]"
93426
93453
  ]