@raydenui/ui 0.9.4 → 0.9.6

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/README.md CHANGED
@@ -92,6 +92,17 @@ function App() {
92
92
  - [create-rayden-app](https://www.npmjs.com/package/create-rayden-app) — CLI scaffolding with 6 templates
93
93
  - [@raydenui/ai](https://www.npmjs.com/package/@raydenui/ai) — MCP server for AI-assisted development
94
94
 
95
+ ## Contributors
96
+
97
+ <!-- ALL-CONTRIBUTORS-LIST:START -->
98
+ <table>
99
+ <tr>
100
+ <td align="center"><a href="https://github.com/playbookTV"><img src="https://github.com/playbookTV.png" width="100px;" alt=""/><br /><sub><b>Leslie Isah</b></sub></a></td>
101
+ <td align="center"><a href="https://github.com/ZyhvarZeGreat"><img src="https://github.com/ZyhvarZeGreat.png" width="100px;" alt=""/><br /><sub><b>Bolude Daniel</b></sub></a></td>
102
+ </tr>
103
+ </table>
104
+ <!-- ALL-CONTRIBUTORS-LIST:END -->
105
+
95
106
  ## License
96
107
 
97
108
  MIT
package/dist/index.cjs CHANGED
@@ -5765,7 +5765,7 @@ var AccordionTrigger = react.forwardRef(
5765
5765
  onClick: () => toggle(value),
5766
5766
  className: cn(
5767
5767
  "flex items-center gap-3 px-4 py-6 w-full text-left transition-colors",
5768
- !isOpen && !disabled && "hover:bg-grey-50",
5768
+ !isOpen && !disabled && "hover:bg-grey-50 dark:hover:bg-grey-100",
5769
5769
  disabled && "opacity-50 cursor-not-allowed",
5770
5770
  className
5771
5771
  ),
@@ -6797,7 +6797,13 @@ function DayCell({ day, state, fullDate, onClick }) {
6797
6797
  "aria-pressed": state === "selected" || state === "start-range" || state === "end-range" ? true : void 0,
6798
6798
  children: [
6799
6799
  day,
6800
- state === "today" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute bottom-[5px] left-1/2 -translate-x-1/2 size-1 rounded-full bg-primary-400", "aria-hidden": "true" })
6800
+ state === "today" && /* @__PURE__ */ jsxRuntime.jsx(
6801
+ "span",
6802
+ {
6803
+ className: "absolute bottom-[5px] left-1/2 -translate-x-1/2 size-1 rounded-full bg-primary-400",
6804
+ "aria-hidden": "true"
6805
+ }
6806
+ )
6801
6807
  ]
6802
6808
  }
6803
6809
  );
@@ -6853,7 +6859,15 @@ function MonthGrid({
6853
6859
  if (rows.length === 6 && rows[5].every((c) => c.state === "disabled")) {
6854
6860
  rows.pop();
6855
6861
  }
6856
- const fullDayNames = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
6862
+ const fullDayNames = [
6863
+ "Monday",
6864
+ "Tuesday",
6865
+ "Wednesday",
6866
+ "Thursday",
6867
+ "Friday",
6868
+ "Saturday",
6869
+ "Sunday"
6870
+ ];
6857
6871
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", role: "grid", "aria-label": "Calendar", children: [
6858
6872
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 items-center", role: "row", children: DAY_LABELS.map((label, i) => /* @__PURE__ */ jsxRuntime.jsx(
6859
6873
  "div",
@@ -6905,7 +6919,8 @@ function YearGrid({ baseYear, selectedYear, onYearClick }) {
6905
6919
  function NavButton({
6906
6920
  direction,
6907
6921
  onClick,
6908
- hidden
6922
+ hidden,
6923
+ className
6909
6924
  }) {
6910
6925
  return /* @__PURE__ */ jsxRuntime.jsx(
6911
6926
  "button",
@@ -6917,7 +6932,8 @@ function NavButton({
6917
6932
  tabIndex: hidden ? -1 : void 0,
6918
6933
  className: cn(
6919
6934
  "flex items-center justify-center p-2 rounded-lg bg-grey-75 hover:bg-grey-200 transition-colors cursor-pointer",
6920
- hidden && "opacity-0 pointer-events-none"
6935
+ hidden && "opacity-0 pointer-events-none",
6936
+ className
6921
6937
  ),
6922
6938
  children: direction === "left" ? /* @__PURE__ */ jsxRuntime.jsx(ChevronLeft, { className: "size-3.5 text-grey-700" }) : /* @__PURE__ */ jsxRuntime.jsx(ChevronRight, { className: "size-3.5 text-grey-700" })
6923
6939
  }
@@ -7011,7 +7027,7 @@ var DatePicker = react.forwardRef(
7011
7027
  className: cn(
7012
7028
  "bg-white dark:bg-grey-50 border border-grey-75 rounded-2xl p-5 shadow-soft-xs",
7013
7029
  "flex flex-col gap-6",
7014
- mode !== "range" && "w-[340px]",
7030
+ mode !== "range" && "w-full max-w-[340px]",
7015
7031
  className
7016
7032
  ),
7017
7033
  ...rest,
@@ -7044,15 +7060,16 @@ var DatePicker = react.forwardRef(
7044
7060
  }
7045
7061
  )
7046
7062
  ] }) }),
7047
- mode === "range" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-8", children: [
7063
+ mode === "range" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col md:flex-row gap-6 md:gap-8", children: [
7048
7064
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4", children: [
7049
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-10 w-[280px]", children: [
7065
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between w-full md:w-[280px]", children: [
7050
7066
  /* @__PURE__ */ jsxRuntime.jsx(NavButton, { direction: "left", onClick: goToPrevMonth }),
7051
7067
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
7052
7068
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-grey-700", children: monthYearLabel }),
7053
7069
  /* @__PURE__ */ jsxRuntime.jsx(ChevronDown2, { className: "size-6 text-grey-500" })
7054
7070
  ] }),
7055
- /* @__PURE__ */ jsxRuntime.jsx(NavButton, { direction: "right", hidden: true })
7071
+ /* @__PURE__ */ jsxRuntime.jsx(NavButton, { direction: "right", onClick: goToNextMonth, className: "md:hidden" }),
7072
+ /* @__PURE__ */ jsxRuntime.jsx(NavButton, { direction: "right", hidden: true, className: "hidden md:flex" })
7056
7073
  ] }),
7057
7074
  /* @__PURE__ */ jsxRuntime.jsx(
7058
7075
  MonthGrid,
@@ -7068,7 +7085,7 @@ var DatePicker = react.forwardRef(
7068
7085
  }
7069
7086
  )
7070
7087
  ] }),
7071
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4", children: [
7088
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden md:flex flex-col gap-4", children: [
7072
7089
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between w-[280px]", children: [
7073
7090
  /* @__PURE__ */ jsxRuntime.jsx(NavButton, { direction: "left", hidden: true }),
7074
7091
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
@@ -7536,11 +7553,11 @@ var Banner = react.forwardRef(
7536
7553
  /* @__PURE__ */ jsxRuntime.jsx(
7537
7554
  "span",
7538
7555
  {
7539
- className: cn("font-semibold leading-[1.45] whitespace-nowrap", textSize2, textColor),
7556
+ className: cn("font-semibold leading-[1.45] sm:whitespace-nowrap", textSize2, textColor),
7540
7557
  children: title
7541
7558
  }
7542
7559
  ),
7543
- description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("leading-[1.45] whitespace-nowrap", textSize2, descColor), children: description }),
7560
+ description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("leading-[1.45] sm:whitespace-nowrap hidden sm:inline", textSize2, descColor), children: description }),
7544
7561
  buttonLabel && /* @__PURE__ */ jsxRuntime.jsx(
7545
7562
  "button",
7546
7563
  {
@@ -7588,8 +7605,8 @@ var colorStyles = {
7588
7605
  },
7589
7606
  success: {
7590
7607
  filled: "bg-success-400 text-white",
7591
- accent: "bg-success-50 text-[#036B26]",
7592
- outline: "border border-[#036B26] text-[#036B26]"
7608
+ accent: "bg-success-50 text-success-700",
7609
+ outline: "border border-success-700 text-success-700"
7593
7610
  },
7594
7611
  warning: {
7595
7612
  filled: "bg-warning-400 text-black",
@@ -7598,8 +7615,8 @@ var colorStyles = {
7598
7615
  },
7599
7616
  error: {
7600
7617
  filled: "bg-error-400 text-white",
7601
- accent: "bg-error-50 text-[#9E0A05]",
7602
- outline: "border border-[#9E0A05] text-[#9E0A05]"
7618
+ accent: "bg-error-50 text-error-700",
7619
+ outline: "border border-error-700 text-error-700"
7603
7620
  },
7604
7621
  neutral: {
7605
7622
  filled: "bg-grey-900 text-grey-50",
@@ -7647,6 +7664,187 @@ function Badge({
7647
7664
  }
7648
7665
  );
7649
7666
  }
7667
+ var CardContext = react.createContext(null);
7668
+ function useCardContext() {
7669
+ const ctx = react.useContext(CardContext);
7670
+ return ctx ?? { size: "md" };
7671
+ }
7672
+ var variantStyles = {
7673
+ default: "border border-grey-200 bg-white dark:bg-grey-50",
7674
+ outlined: "border-2 border-grey-300 bg-transparent",
7675
+ elevated: "border border-grey-100 bg-white dark:bg-grey-50 shadow-soft-md",
7676
+ ghost: "border-none bg-transparent"
7677
+ };
7678
+ var sizeStyles2 = {
7679
+ sm: {
7680
+ header: "px-4 py-3",
7681
+ body: "px-4 py-3",
7682
+ footer: "px-4 py-3"
7683
+ },
7684
+ md: {
7685
+ header: "px-5 py-4",
7686
+ body: "px-5 py-4",
7687
+ footer: "px-5 py-4"
7688
+ },
7689
+ lg: {
7690
+ header: "px-6 py-5",
7691
+ body: "px-6 py-5",
7692
+ footer: "px-6 py-5"
7693
+ }
7694
+ };
7695
+ var roundedStyles = {
7696
+ sm: "rounded-lg",
7697
+ md: "rounded-[10px]",
7698
+ lg: "rounded-xl",
7699
+ xl: "rounded-2xl",
7700
+ full: "rounded-3xl"
7701
+ };
7702
+ var shadowStyles = {
7703
+ none: "",
7704
+ sm: "shadow-soft-xxs",
7705
+ md: "shadow-soft-xs",
7706
+ lg: "shadow-soft-sm"
7707
+ };
7708
+ var footerAlignStyles = {
7709
+ left: "justify-start",
7710
+ center: "justify-center",
7711
+ right: "justify-end",
7712
+ between: "justify-between"
7713
+ };
7714
+ var aspectRatioStyles = {
7715
+ auto: "",
7716
+ video: "aspect-video",
7717
+ square: "aspect-square",
7718
+ portrait: "aspect-[3/4]"
7719
+ };
7720
+ var Card = react.forwardRef(
7721
+ ({
7722
+ variant = "default",
7723
+ size = "md",
7724
+ rounded = "lg",
7725
+ shadow = "sm",
7726
+ hoverable = false,
7727
+ className,
7728
+ children,
7729
+ ...rest
7730
+ }, ref) => {
7731
+ return /* @__PURE__ */ jsxRuntime.jsx(CardContext.Provider, { value: { size }, children: /* @__PURE__ */ jsxRuntime.jsx(
7732
+ "div",
7733
+ {
7734
+ ref,
7735
+ className: cn(
7736
+ "flex flex-col overflow-hidden",
7737
+ variantStyles[variant],
7738
+ roundedStyles[rounded],
7739
+ variant !== "elevated" && shadowStyles[shadow],
7740
+ hoverable && "transition-shadow duration-200 hover:shadow-soft-md",
7741
+ className
7742
+ ),
7743
+ ...rest,
7744
+ children
7745
+ }
7746
+ ) });
7747
+ }
7748
+ );
7749
+ Card.displayName = "Card";
7750
+ var CardHeader = react.forwardRef(
7751
+ ({ title, subtitle, actions, bordered = false, className, children, ...rest }, ref) => {
7752
+ const { size } = useCardContext();
7753
+ return /* @__PURE__ */ jsxRuntime.jsxs(
7754
+ "div",
7755
+ {
7756
+ ref,
7757
+ className: cn(
7758
+ "flex items-start justify-between gap-4",
7759
+ sizeStyles2[size].header,
7760
+ bordered && "border-b border-grey-200",
7761
+ className
7762
+ ),
7763
+ ...rest,
7764
+ children: [
7765
+ (title || subtitle || children) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [
7766
+ title && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold leading-[1.45] text-grey-900", children: title }),
7767
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm leading-[1.45] text-grey-500", children: subtitle }),
7768
+ children
7769
+ ] }),
7770
+ actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-2", children: actions })
7771
+ ]
7772
+ }
7773
+ );
7774
+ }
7775
+ );
7776
+ CardHeader.displayName = "CardHeader";
7777
+ var CardBody = react.forwardRef(
7778
+ ({ noPadding = false, className, children, ...rest }, ref) => {
7779
+ const { size } = useCardContext();
7780
+ return /* @__PURE__ */ jsxRuntime.jsx(
7781
+ "div",
7782
+ {
7783
+ ref,
7784
+ className: cn("flex-1", !noPadding && sizeStyles2[size].body, className),
7785
+ ...rest,
7786
+ children
7787
+ }
7788
+ );
7789
+ }
7790
+ );
7791
+ CardBody.displayName = "CardBody";
7792
+ var CardFooter = react.forwardRef(
7793
+ ({ align = "right", bordered = false, className, children, ...rest }, ref) => {
7794
+ const { size } = useCardContext();
7795
+ return /* @__PURE__ */ jsxRuntime.jsx(
7796
+ "div",
7797
+ {
7798
+ ref,
7799
+ className: cn(
7800
+ "flex items-center gap-3",
7801
+ sizeStyles2[size].footer,
7802
+ footerAlignStyles[align],
7803
+ bordered && "border-t border-grey-200",
7804
+ className
7805
+ ),
7806
+ ...rest,
7807
+ children
7808
+ }
7809
+ );
7810
+ }
7811
+ );
7812
+ CardFooter.displayName = "CardFooter";
7813
+ var CardImage = react.forwardRef(
7814
+ ({ position = "top", aspectRatio = "auto", objectFit = "cover", alt, className, ...rest }, ref) => {
7815
+ const objectFitClasses = {
7816
+ cover: "object-cover",
7817
+ contain: "object-contain",
7818
+ fill: "object-fill"
7819
+ };
7820
+ return /* @__PURE__ */ jsxRuntime.jsx(
7821
+ "div",
7822
+ {
7823
+ className: cn(
7824
+ "w-full overflow-hidden",
7825
+ position === "top" && "first:rounded-t-[inherit]",
7826
+ position === "bottom" && "last:rounded-b-[inherit]",
7827
+ position === "full" && "first:rounded-t-[inherit] last:rounded-b-[inherit]"
7828
+ ),
7829
+ children: /* @__PURE__ */ jsxRuntime.jsx(
7830
+ "img",
7831
+ {
7832
+ ref,
7833
+ alt,
7834
+ className: cn(
7835
+ "w-full",
7836
+ aspectRatioStyles[aspectRatio],
7837
+ objectFitClasses[objectFit],
7838
+ className
7839
+ ),
7840
+ ...rest
7841
+ }
7842
+ )
7843
+ }
7844
+ );
7845
+ }
7846
+ );
7847
+ CardImage.displayName = "CardImage";
7650
7848
  var stateStyles = {
7651
7849
  information: {
7652
7850
  border: "bg-secondary-500",
@@ -8446,9 +8644,9 @@ function BoxIcon({ className }) {
8446
8644
  );
8447
8645
  }
8448
8646
  var sizeClasses2 = {
8449
- sm: "w-[400px]",
8450
- md: "w-[500px]",
8451
- lg: "w-[640px]"
8647
+ sm: "w-full max-w-[400px] mx-4 sm:mx-0",
8648
+ md: "w-full max-w-[500px] mx-4 sm:mx-0",
8649
+ lg: "w-full max-w-[640px] mx-4 sm:mx-0"
8452
8650
  };
8453
8651
  var Modal = react.forwardRef(
8454
8652
  ({
@@ -8892,7 +9090,30 @@ function Variation6({ label, value, icon, trendBadge, description, cta }) {
8892
9090
  cta && /* @__PURE__ */ jsxRuntime.jsx(CtaFooter, { cta, centered: true })
8893
9091
  ] });
8894
9092
  }
8895
- function MetricsCard({ variation = "2", className, ...props }) {
9093
+ function MetricsCard({
9094
+ variation = "2",
9095
+ className,
9096
+ // Destructure component-specific props to prevent them from being spread to DOM
9097
+ label,
9098
+ value,
9099
+ icon,
9100
+ trendBadge,
9101
+ statusBadge,
9102
+ description,
9103
+ secondaryText,
9104
+ cta,
9105
+ ...rest
9106
+ }) {
9107
+ const componentProps = {
9108
+ label,
9109
+ value,
9110
+ icon,
9111
+ trendBadge,
9112
+ statusBadge,
9113
+ description,
9114
+ secondaryText,
9115
+ cta
9116
+ };
8896
9117
  return /* @__PURE__ */ jsxRuntime.jsxs(
8897
9118
  "div",
8898
9119
  {
@@ -8900,14 +9121,14 @@ function MetricsCard({ variation = "2", className, ...props }) {
8900
9121
  "flex flex-col overflow-clip rounded-xl border border-grey-200 bg-white dark:bg-grey-50 shadow-soft-xxs",
8901
9122
  className
8902
9123
  ),
8903
- ...props,
9124
+ ...rest,
8904
9125
  children: [
8905
- variation === "1" && /* @__PURE__ */ jsxRuntime.jsx(Variation1, { ...props }),
8906
- variation === "2" && /* @__PURE__ */ jsxRuntime.jsx(Variation2, { ...props }),
8907
- variation === "3" && /* @__PURE__ */ jsxRuntime.jsx(Variation3, { ...props }),
8908
- variation === "4" && /* @__PURE__ */ jsxRuntime.jsx(Variation4, { ...props }),
8909
- variation === "5" && /* @__PURE__ */ jsxRuntime.jsx(Variation5, { ...props }),
8910
- variation === "6" && /* @__PURE__ */ jsxRuntime.jsx(Variation6, { ...props })
9126
+ variation === "1" && /* @__PURE__ */ jsxRuntime.jsx(Variation1, { ...componentProps }),
9127
+ variation === "2" && /* @__PURE__ */ jsxRuntime.jsx(Variation2, { ...componentProps }),
9128
+ variation === "3" && /* @__PURE__ */ jsxRuntime.jsx(Variation3, { ...componentProps }),
9129
+ variation === "4" && /* @__PURE__ */ jsxRuntime.jsx(Variation4, { ...componentProps }),
9130
+ variation === "5" && /* @__PURE__ */ jsxRuntime.jsx(Variation5, { ...componentProps }),
9131
+ variation === "6" && /* @__PURE__ */ jsxRuntime.jsx(Variation6, { ...componentProps })
8911
9132
  ]
8912
9133
  }
8913
9134
  );
@@ -9071,19 +9292,34 @@ var FileUploadDropZone = react.forwardRef(
9071
9292
  ] }),
9072
9293
  /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "primary", size: "sm", onClick: handleBrowse, children: "Browse Files" })
9073
9294
  ] }),
9074
- state === "uploading" && uploadingFile && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col items-center gap-4", "aria-live": "polite", "aria-atomic": "true", children: [
9075
- /* @__PURE__ */ jsxRuntime.jsx(FileTypeIcon, { type: getFileType(uploadingFile.name), "aria-hidden": "true" }),
9076
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full max-w-xs flex-col gap-2", children: [
9077
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
9078
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-body-sm font-medium text-grey-700 truncate", children: uploadingFile.name }),
9079
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-body-xs font-medium text-grey-500 ml-2 shrink-0", "aria-label": `Upload progress: ${Math.round(uploadingFile.progress)} percent`, children: [
9080
- Math.round(uploadingFile.progress),
9081
- "%"
9295
+ state === "uploading" && uploadingFile && /* @__PURE__ */ jsxRuntime.jsxs(
9296
+ "div",
9297
+ {
9298
+ className: "flex w-full flex-col items-center gap-4",
9299
+ "aria-live": "polite",
9300
+ "aria-atomic": "true",
9301
+ children: [
9302
+ /* @__PURE__ */ jsxRuntime.jsx(FileTypeIcon, { type: getFileType(uploadingFile.name), "aria-hidden": "true" }),
9303
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full max-w-xs flex-col gap-2", children: [
9304
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
9305
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-body-sm font-medium text-grey-700 truncate", children: uploadingFile.name }),
9306
+ /* @__PURE__ */ jsxRuntime.jsxs(
9307
+ "span",
9308
+ {
9309
+ className: "text-body-xs font-medium text-grey-500 ml-2 shrink-0",
9310
+ "aria-label": `Upload progress: ${Math.round(uploadingFile.progress)} percent`,
9311
+ children: [
9312
+ Math.round(uploadingFile.progress),
9313
+ "%"
9314
+ ]
9315
+ }
9316
+ )
9317
+ ] }),
9318
+ /* @__PURE__ */ jsxRuntime.jsx(ProgressBar, { value: uploadingFile.progress, size: "sm", showPercentage: false })
9082
9319
  ] })
9083
- ] }),
9084
- /* @__PURE__ */ jsxRuntime.jsx(ProgressBar, { value: uploadingFile.progress, size: "sm", showPercentage: false })
9085
- ] })
9086
- ] }),
9320
+ ]
9321
+ }
9322
+ ),
9087
9323
  state === "success" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", role: "status", children: [
9088
9324
  /* @__PURE__ */ jsxRuntime.jsx(UploadStateIcon, { state: "success", size: 56, "aria-hidden": "true" }),
9089
9325
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-center gap-1", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-body-sm font-semibold text-grey-800", children: "Document Uploaded Successfully" }) }),
@@ -9343,14 +9579,14 @@ var FileUpload = react.forwardRef(
9343
9579
  FileUpload.displayName = "FileUpload";
9344
9580
  var sidebarThemeStyles = {
9345
9581
  light: {
9346
- container: "bg-white",
9582
+ container: "bg-white dark:bg-grey-50",
9347
9583
  defaultText: "text-grey-700",
9348
9584
  defaultIcon: "text-grey-400",
9349
9585
  selectedBg: "bg-primary-50",
9350
9586
  selectedText: "text-grey-900",
9351
9587
  selectedBorder: "border-l-2 border-primary-400",
9352
9588
  selectedIcon: "text-grey-900",
9353
- hoverBg: "hover:bg-grey-50",
9589
+ hoverBg: "hover:bg-grey-50 dark:hover:bg-grey-100",
9354
9590
  sectionTitle: "text-grey-400",
9355
9591
  divider: "border-grey-100",
9356
9592
  badgeDefault: "bg-grey-100 text-grey-700",
@@ -14363,7 +14599,13 @@ var ActivityItem = react.forwardRef(
14363
14599
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1 w-full", children: [
14364
14600
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between w-full", children: [
14365
14601
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-1 items-start gap-1 min-w-0", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-body-sm leading-5 text-grey-600", children: text }) }),
14366
- unread && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 size-2 rounded-full bg-[#04802E] border-[1.5px] border-white", "aria-hidden": "true" }),
14602
+ unread && /* @__PURE__ */ jsxRuntime.jsx(
14603
+ "span",
14604
+ {
14605
+ className: "shrink-0 size-2 rounded-full bg-[#04802E] border-[1.5px] border-white",
14606
+ "aria-hidden": "true"
14607
+ }
14608
+ ),
14367
14609
  unread && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Unread" })
14368
14610
  ] }),
14369
14611
  (date || time || link || badge) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-1 w-full", children: [
@@ -14722,6 +14964,11 @@ exports.Breadcrumb = Breadcrumb;
14722
14964
  exports.Button = Button;
14723
14965
  exports.ButtonGroup = ButtonGroup;
14724
14966
  exports.ButtonGroupItem = ButtonGroupItem;
14967
+ exports.Card = Card;
14968
+ exports.CardBody = CardBody;
14969
+ exports.CardFooter = CardFooter;
14970
+ exports.CardHeader = CardHeader;
14971
+ exports.CardImage = CardImage;
14725
14972
  exports.Checkbox = Checkbox;
14726
14973
  exports.Chip = Chip;
14727
14974
  exports.Counter = Counter;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { SVGAttributes, HTMLAttributes, ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from 'react';
2
+ import { SVGAttributes, HTMLAttributes, ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, ImgHTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from 'react';
3
3
  import { IconVariant, IconName, IconRecord } from './icons.cjs';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import { ChartData, ChartOptions } from 'chart.js';
@@ -329,6 +329,59 @@ interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
329
329
  }
330
330
  declare function Badge({ color, type, size, leadingIcon, trailingIcon, className, children, ...rest }: BadgeProps): react_jsx_runtime.JSX.Element;
331
331
 
332
+ type CardVariant = "default" | "outlined" | "elevated" | "ghost";
333
+ type CardSize = "sm" | "md" | "lg";
334
+ type CardRounded = "sm" | "md" | "lg" | "xl" | "full";
335
+ type CardShadow = "none" | "sm" | "md" | "lg";
336
+ type CardImagePosition = "top" | "bottom" | "full";
337
+ interface CardProps extends HTMLAttributes<HTMLDivElement> {
338
+ /** Visual style variant */
339
+ variant?: CardVariant;
340
+ /** Padding scale for sub-components */
341
+ size?: CardSize;
342
+ /** Corner radius */
343
+ rounded?: CardRounded;
344
+ /** Shadow intensity */
345
+ shadow?: CardShadow;
346
+ /** Enable hover shadow effect */
347
+ hoverable?: boolean;
348
+ }
349
+ interface CardHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
350
+ /** Header title */
351
+ title?: ReactNode;
352
+ /** Header subtitle */
353
+ subtitle?: ReactNode;
354
+ /** Actions slot (right side) */
355
+ actions?: ReactNode;
356
+ /** Show bottom border */
357
+ bordered?: boolean;
358
+ }
359
+ interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {
360
+ /** Remove default padding */
361
+ noPadding?: boolean;
362
+ }
363
+ interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {
364
+ /** Footer content alignment */
365
+ align?: "left" | "center" | "right" | "between";
366
+ /** Show top border */
367
+ bordered?: boolean;
368
+ }
369
+ interface CardImageProps extends ImgHTMLAttributes<HTMLImageElement> {
370
+ /** Image position relative to card content */
371
+ position?: CardImagePosition;
372
+ /** Aspect ratio */
373
+ aspectRatio?: "auto" | "video" | "square" | "portrait";
374
+ /** Object fit behavior */
375
+ objectFit?: "cover" | "contain" | "fill";
376
+ /** Alt text (required for accessibility) */
377
+ alt: string;
378
+ }
379
+ declare const Card: react.ForwardRefExoticComponent<CardProps & react.RefAttributes<HTMLDivElement>>;
380
+ declare const CardHeader: react.ForwardRefExoticComponent<CardHeaderProps & react.RefAttributes<HTMLDivElement>>;
381
+ declare const CardBody: react.ForwardRefExoticComponent<CardBodyProps & react.RefAttributes<HTMLDivElement>>;
382
+ declare const CardFooter: react.ForwardRefExoticComponent<CardFooterProps & react.RefAttributes<HTMLDivElement>>;
383
+ declare const CardImage: react.ForwardRefExoticComponent<CardImageProps & react.RefAttributes<HTMLImageElement>>;
384
+
332
385
  type AlertVariant = "toast" | "banner";
333
386
  type AlertState = "information" | "success" | "warning" | "error";
334
387
  interface AlertAction {
@@ -525,7 +578,7 @@ interface MetricsCardProps extends HTMLAttributes<HTMLDivElement> {
525
578
  /** Call-to-action link */
526
579
  cta?: MetricsCardCta;
527
580
  }
528
- declare function MetricsCard({ variation, className, ...props }: MetricsCardProps): react_jsx_runtime.JSX.Element;
581
+ declare function MetricsCard({ variation, className, label, value, icon, trendBadge, statusBadge, description, secondaryText, cta, ...rest }: MetricsCardProps): react_jsx_runtime.JSX.Element;
529
582
 
530
583
  type FileUploadItemStatus = "pending" | "uploading" | "complete" | "error";
531
584
  interface FileUploadFileData {
@@ -1152,4 +1205,4 @@ declare function useRaydenRadio<TFieldValues extends FieldValues = FieldValues,
1152
1205
  value: string;
1153
1206
  }): UseRaydenRadioReturn<TName>;
1154
1207
 
1155
- export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, type AccordionType, ActivityContent, type ActivityContentAction, type ActivityContentAttachment, type ActivityContentProps, type ActivityContentStyle, type ActivityContentVariant, ActivityItem, type ActivityItemLink, type ActivityItemProps, Alert, type AlertAction, type AlertProps, type AlertState, type AlertVariant, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarGroupSize, type AvatarProps, type AvatarSize, type AvatarStatus, type AvatarType, Badge, type BadgeColor, type BadgeProps, type BadgeSize, type BadgeType, Banner, type BannerEmphasis, type BannerProps, type BannerSize, type BannerStatus, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, type BreadcrumbSeparator, Button, type ButtonAppearance, ButtonGroup, ButtonGroupItem, type ButtonGroupItemProps, type ButtonGroupProps, type ButtonProps, type ButtonSize, type ButtonVariant, type ChartType, Checkbox, type CheckboxProps, Chip, type ChipProps, Counter, type CounterProps, type CounterShape, type CounterSize, DatePicker, type DatePickerMode, type DatePickerProps, Divider, type DividerProps, type DividerVariant, type DropZoneState, DropdownMenu, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, type DropdownMenuGroupProps, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, type DropdownMenuProps, DropdownMenuSeparator, type DropdownMenuSeparatorProps, DropdownMenuTrigger, type DropdownMenuTriggerProps, EmptyStateIllustration, type EmptyStateIllustrationProps, FileUpload, FileUploadDropZone, type FileUploadDropZoneProps, type FileUploadFileData, FileUploadItem, type FileUploadItemProps, type FileUploadItemStatus, type FileUploadProps, Icon, IconName, type IconProps, type IconSize, IconVariant, type IllustrationName, Input, type InputProps, type InputSize, LinearStepper, type LinearStepperProps, MetricsCard, type MetricsCardCta, type MetricsCardProps, type MetricsCardStatusBadge, type MetricsCardTrend, type MetricsCardTrendBadge, type MetricsCardVariation, Modal, type ModalProps, type ModalSize, NumberCounter, type NumberCounterColor, type NumberCounterProps, type NumberCounterSize, Pagination, type PaginationProps, ProgressBar, type ProgressBarProps, type ProgressBarSize, type ProgressBarType, ProgressCircle, type ProgressCircleProps, type ProgressCircleSize, type ProgressCircleStyle, Radio, type RadioProps, RangeSlider, type RangeSliderProps, RaydenChart, type RaydenChartProps, type ResolvedTheme, SegmentedStepper, type SegmentedStepperProps, Select, SelectOption, type SelectOptionProps, type SelectProps, SidebarMenu, type SidebarMenuContextValue, SidebarMenuItem, type SidebarMenuItemProps, type SidebarMenuProps, SidebarMenuSection, type SidebarMenuSectionProps, SidebarMenuSub, SidebarMenuSubItem, type SidebarMenuSubItemProps, type SidebarMenuSubProps, type SidebarMenuTheme, Slider, type SliderProps, type SliderSize, type SortDirection, Spinner, type SpinnerLabelPosition, type SpinnerProps, type SpinnerSize, type SpinnerStyle, type SpinnerType, type StepIndicator, type StepItem, type StepStatus, Stepper, type StepperOrientation, type StepperProps, Tab, type TabProps, Table, TableBody, type TableBodyProps, TableCell, type TableCellProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, Tabs, type TabsOrientation, type TabsProps, type TabsSize, type TabsVariant, type Theme, ThemeProvider, type ThemeProviderProps, Toggle, type ToggleProps, Tooltip, type TooltipAction, type TooltipPosition, type TooltipProps, type TooltipTheme, type UseRaydenCheckboxReturn, type UseRaydenFormControlOptions, type UseRaydenInputOptions, type UseRaydenInputReturn, type UseRaydenRadioReturn, type UseRaydenSelectOptions, type UseRaydenSelectReturn, chartColors, chartFont, cn, createGradientFill, hexToRgba, illustrationNames, useRaydenCheckbox, useRaydenInput, useRaydenRadio, useRaydenSelect, useRaydenToggle, useResolvedTheme, useTheme };
1208
+ export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, type AccordionType, ActivityContent, type ActivityContentAction, type ActivityContentAttachment, type ActivityContentProps, type ActivityContentStyle, type ActivityContentVariant, ActivityItem, type ActivityItemLink, type ActivityItemProps, Alert, type AlertAction, type AlertProps, type AlertState, type AlertVariant, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarGroupSize, type AvatarProps, type AvatarSize, type AvatarStatus, type AvatarType, Badge, type BadgeColor, type BadgeProps, type BadgeSize, type BadgeType, Banner, type BannerEmphasis, type BannerProps, type BannerSize, type BannerStatus, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, type BreadcrumbSeparator, Button, type ButtonAppearance, ButtonGroup, ButtonGroupItem, type ButtonGroupItemProps, type ButtonGroupProps, type ButtonProps, type ButtonSize, type ButtonVariant, Card, CardBody, type CardBodyProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, CardImage, type CardImagePosition, type CardImageProps, type CardProps, type CardRounded, type CardShadow, type CardSize, type CardVariant, type ChartType, Checkbox, type CheckboxProps, Chip, type ChipProps, Counter, type CounterProps, type CounterShape, type CounterSize, DatePicker, type DatePickerMode, type DatePickerProps, Divider, type DividerProps, type DividerVariant, type DropZoneState, DropdownMenu, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, type DropdownMenuGroupProps, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, type DropdownMenuProps, DropdownMenuSeparator, type DropdownMenuSeparatorProps, DropdownMenuTrigger, type DropdownMenuTriggerProps, EmptyStateIllustration, type EmptyStateIllustrationProps, FileUpload, FileUploadDropZone, type FileUploadDropZoneProps, type FileUploadFileData, FileUploadItem, type FileUploadItemProps, type FileUploadItemStatus, type FileUploadProps, Icon, IconName, type IconProps, type IconSize, IconVariant, type IllustrationName, Input, type InputProps, type InputSize, LinearStepper, type LinearStepperProps, MetricsCard, type MetricsCardCta, type MetricsCardProps, type MetricsCardStatusBadge, type MetricsCardTrend, type MetricsCardTrendBadge, type MetricsCardVariation, Modal, type ModalProps, type ModalSize, NumberCounter, type NumberCounterColor, type NumberCounterProps, type NumberCounterSize, Pagination, type PaginationProps, ProgressBar, type ProgressBarProps, type ProgressBarSize, type ProgressBarType, ProgressCircle, type ProgressCircleProps, type ProgressCircleSize, type ProgressCircleStyle, Radio, type RadioProps, RangeSlider, type RangeSliderProps, RaydenChart, type RaydenChartProps, type ResolvedTheme, SegmentedStepper, type SegmentedStepperProps, Select, SelectOption, type SelectOptionProps, type SelectProps, SidebarMenu, type SidebarMenuContextValue, SidebarMenuItem, type SidebarMenuItemProps, type SidebarMenuProps, SidebarMenuSection, type SidebarMenuSectionProps, SidebarMenuSub, SidebarMenuSubItem, type SidebarMenuSubItemProps, type SidebarMenuSubProps, type SidebarMenuTheme, Slider, type SliderProps, type SliderSize, type SortDirection, Spinner, type SpinnerLabelPosition, type SpinnerProps, type SpinnerSize, type SpinnerStyle, type SpinnerType, type StepIndicator, type StepItem, type StepStatus, Stepper, type StepperOrientation, type StepperProps, Tab, type TabProps, Table, TableBody, type TableBodyProps, TableCell, type TableCellProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, Tabs, type TabsOrientation, type TabsProps, type TabsSize, type TabsVariant, type Theme, ThemeProvider, type ThemeProviderProps, Toggle, type ToggleProps, Tooltip, type TooltipAction, type TooltipPosition, type TooltipProps, type TooltipTheme, type UseRaydenCheckboxReturn, type UseRaydenFormControlOptions, type UseRaydenInputOptions, type UseRaydenInputReturn, type UseRaydenRadioReturn, type UseRaydenSelectOptions, type UseRaydenSelectReturn, chartColors, chartFont, cn, createGradientFill, hexToRgba, illustrationNames, useRaydenCheckbox, useRaydenInput, useRaydenRadio, useRaydenSelect, useRaydenToggle, useResolvedTheme, useTheme };