@particle-academy/react-fancy 2.1.0 → 2.2.1

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.cts CHANGED
@@ -10,8 +10,8 @@ type ActionColor = "blue" | "emerald" | "amber" | "red" | "violet" | "indigo" |
10
10
  type Placement = "top" | "bottom" | "left" | "right" | "top-start" | "top-end" | "bottom-start" | "bottom-end";
11
11
 
12
12
  interface ActionProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "color"> {
13
- /** Shape variant */
14
- variant?: "default" | "circle";
13
+ /** Shape/fill variant */
14
+ variant?: "default" | "circle" | "ghost";
15
15
  /** Standalone color (overrides state colors) */
16
16
  color?: ActionColor;
17
17
  size?: Size;
package/dist/index.d.ts CHANGED
@@ -10,8 +10,8 @@ type ActionColor = "blue" | "emerald" | "amber" | "red" | "violet" | "indigo" |
10
10
  type Placement = "top" | "bottom" | "left" | "right" | "top-start" | "top-end" | "bottom-start" | "bottom-end";
11
11
 
12
12
  interface ActionProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "color"> {
13
- /** Shape variant */
14
- variant?: "default" | "circle";
13
+ /** Shape/fill variant */
14
+ variant?: "default" | "circle" | "ghost";
15
15
  /** Standalone color (overrides state colors) */
16
16
  color?: ActionColor;
17
17
  size?: Size;
package/dist/index.js CHANGED
@@ -993,6 +993,22 @@ var defaultClasses = "bg-white text-zinc-700 border border-zinc-200 hover:bg-zin
993
993
  var activeClasses = "bg-blue-500 text-white border border-blue-600 hover:bg-blue-600 dark:bg-blue-600 dark:border-blue-500 dark:hover:bg-blue-500";
994
994
  var checkedClasses = "bg-emerald-500 text-white border border-emerald-600 hover:bg-emerald-600 dark:bg-emerald-600 dark:border-emerald-500 dark:hover:bg-emerald-500";
995
995
  var warnClasses = "bg-amber-50 text-amber-700 border border-amber-200 hover:bg-amber-100 dark:bg-amber-900/30 dark:text-amber-300 dark:border-amber-700 dark:hover:bg-amber-900/50";
996
+ var ghostColorClasses = {
997
+ blue: "bg-transparent text-blue-600 hover:bg-blue-50 dark:text-blue-400 dark:hover:bg-blue-950/50",
998
+ emerald: "bg-transparent text-emerald-600 hover:bg-emerald-50 dark:text-emerald-400 dark:hover:bg-emerald-950/50",
999
+ amber: "bg-transparent text-amber-600 hover:bg-amber-50 dark:text-amber-400 dark:hover:bg-amber-950/50",
1000
+ red: "bg-transparent text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/50",
1001
+ violet: "bg-transparent text-violet-600 hover:bg-violet-50 dark:text-violet-400 dark:hover:bg-violet-950/50",
1002
+ indigo: "bg-transparent text-indigo-600 hover:bg-indigo-50 dark:text-indigo-400 dark:hover:bg-indigo-950/50",
1003
+ sky: "bg-transparent text-sky-600 hover:bg-sky-50 dark:text-sky-400 dark:hover:bg-sky-950/50",
1004
+ rose: "bg-transparent text-rose-600 hover:bg-rose-50 dark:text-rose-400 dark:hover:bg-rose-950/50",
1005
+ orange: "bg-transparent text-orange-600 hover:bg-orange-50 dark:text-orange-400 dark:hover:bg-orange-950/50",
1006
+ zinc: "bg-transparent text-zinc-600 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800"
1007
+ };
1008
+ var ghostDefaultClasses = "bg-transparent text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800";
1009
+ var ghostActiveClasses = "bg-blue-50 text-blue-700 hover:bg-blue-100 dark:bg-blue-950/50 dark:text-blue-300 dark:hover:bg-blue-950";
1010
+ var ghostCheckedClasses = "bg-emerald-50 text-emerald-700 hover:bg-emerald-100 dark:bg-emerald-950/50 dark:text-emerald-300 dark:hover:bg-emerald-950";
1011
+ var ghostWarnClasses = "bg-transparent text-amber-700 hover:bg-amber-50 dark:text-amber-300 dark:hover:bg-amber-950/50";
996
1012
  var horizontalSize = {
997
1013
  xs: "px-2 py-1 text-xs",
998
1014
  sm: "px-2 py-1 text-xs",
@@ -1031,19 +1047,32 @@ var badgeSize = {
1031
1047
  function isColored(color, active, checked) {
1032
1048
  return !!(color || active || checked);
1033
1049
  }
1034
- function getColorClasses(color, active, checked, warn) {
1050
+ function getColorClasses(color, active, checked, warn, ghost) {
1051
+ if (ghost) {
1052
+ if (color) return ghostColorClasses[color];
1053
+ if (checked) return ghostCheckedClasses;
1054
+ if (active) return ghostActiveClasses;
1055
+ if (warn) return ghostWarnClasses;
1056
+ return ghostDefaultClasses;
1057
+ }
1035
1058
  if (color) return colorClasses[color];
1036
1059
  if (checked) return checkedClasses;
1037
1060
  if (active) return activeClasses;
1038
1061
  if (warn) return warnClasses;
1039
1062
  return defaultClasses;
1040
1063
  }
1041
- function getIconColorClasses(color, active, checked, warn) {
1064
+ function getIconColorClasses(color, active, checked, warn, ghost) {
1065
+ if (ghost) {
1066
+ return "text-current";
1067
+ }
1042
1068
  if (color || active || checked) return "text-white";
1043
1069
  if (warn) return "text-amber-600 dark:text-amber-400";
1044
1070
  return "text-zinc-500 dark:text-zinc-400";
1045
1071
  }
1046
- function getBadgeClasses(color, active, checked, warn) {
1072
+ function getBadgeClasses(color, active, checked, warn, ghost) {
1073
+ if (ghost) {
1074
+ return "bg-current/10 text-current";
1075
+ }
1047
1076
  if (isColored(color, active, checked)) return "bg-white/20 text-white";
1048
1077
  if (warn) return "bg-amber-200 text-amber-800 dark:bg-amber-800 dark:text-amber-200";
1049
1078
  return "bg-zinc-200 text-zinc-700 dark:bg-zinc-600 dark:text-zinc-200";
@@ -1100,13 +1129,14 @@ var Action = forwardRef(
1100
1129
  ...props
1101
1130
  }, ref) => {
1102
1131
  const isCircle = variant === "circle";
1132
+ const isGhost = variant === "ghost";
1103
1133
  const { primary, secondary } = parsePlacement(iconPlace);
1104
1134
  const isVertical = isVerticalPrimary(primary);
1105
1135
  const isCompound = !!secondary;
1106
1136
  const needsWrapper = isVertical || isCompound;
1107
1137
  const isReversed = iconPlace === "right";
1108
1138
  const sizeClass = isCircle ? circleSize[size] : horizontalSize[size];
1109
- const iconColorCls = getIconColorClasses(color, active, checked, warn);
1139
+ const iconColorCls = getIconColorClasses(color, active, checked, warn, isGhost);
1110
1140
  const buildElement = (key, trailing) => {
1111
1141
  switch (key) {
1112
1142
  case "e": {
@@ -1163,7 +1193,7 @@ var Action = forwardRef(
1163
1193
  className: cn(
1164
1194
  "inline-flex items-center justify-center font-medium rounded-full",
1165
1195
  badgeSize[size],
1166
- getBadgeClasses(color, active, checked, warn)
1196
+ getBadgeClasses(color, active, checked, warn, isGhost)
1167
1197
  ),
1168
1198
  "data-action-badge": true,
1169
1199
  children: badge
@@ -1212,7 +1242,7 @@ var Action = forwardRef(
1212
1242
  "disabled:opacity-50 disabled:cursor-not-allowed",
1213
1243
  isCircle ? "rounded-full" : "rounded-lg",
1214
1244
  sizeClass,
1215
- getColorClasses(color, active, checked, warn),
1245
+ getColorClasses(color, active, checked, warn, isGhost),
1216
1246
  !isCircle && !needsWrapper && "gap-2",
1217
1247
  !isCircle && needsWrapper && "gap-2",
1218
1248
  isReversed && !needsWrapper && "flex-row-reverse",