@tenerife.music/ui 1.1.1 → 1.2.0

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.mjs CHANGED
@@ -831,15 +831,16 @@ var BUTTON_TOKENS = {
831
831
  /**
832
832
  * Icon size within buttons by button size
833
833
  * Scales proportionally with button size for visual balance
834
+ * Contains full SVG selector classes for direct use in CVA
834
835
  */
835
836
  iconSize: {
836
- sm: "size-3.5",
837
+ sm: "[&_svg]:w-3.5 [&_svg]:h-3.5",
837
838
  // 14px (0.875rem) - smaller icon for small buttons
838
- md: "size-4",
839
+ md: "[&_svg]:w-4 [&_svg]:h-4",
839
840
  // 16px (1rem) - medium icon for medium buttons
840
- lg: "size-5",
841
+ lg: "[&_svg]:w-5 [&_svg]:h-5",
841
842
  // 20px (1.25rem) - larger icon for large buttons
842
- icon: "size-4"
843
+ icon: "[&_svg]:w-4 [&_svg]:h-4"
843
844
  // 16px (1rem) - medium icon for icon-only buttons
844
845
  },
845
846
  /**
@@ -5081,42 +5082,28 @@ var LINK_TOKENS = {
5081
5082
  * Maps to Tailwind height utilities
5082
5083
  */
5083
5084
  height: {
5084
- xs: "h-7",
5085
5085
  // 28px (1.75rem)
5086
5086
  sm: "h-8",
5087
5087
  // 32px (2rem)
5088
5088
  md: "h-9",
5089
5089
  // 36px (2.25rem)
5090
- lg: "h-10",
5091
- // 40px (2.5rem)
5092
- xl: "h-11"
5093
- // 44px (2.75rem)
5094
- },
5090
+ lg: "h-10"},
5095
5091
  /**
5096
5092
  * Link padding by size
5097
5093
  * Horizontal and vertical padding values
5098
5094
  */
5099
5095
  padding: {
5100
5096
  horizontal: {
5101
- xs: "px-xs",
5102
5097
  // 4px (0.25rem) - maps to semanticSpacing.xs
5103
5098
  sm: "px-sm",
5104
5099
  // 8px (0.5rem) - maps to semanticSpacing.sm
5105
5100
  md: "px-md",
5106
5101
  // 16px (1rem) - maps to semanticSpacing.md
5107
- lg: "px-lg",
5108
- // 24px (1.5rem) - maps to semanticSpacing.lg
5109
- xl: "px-xl"
5110
- // 32px (2rem) - maps to semanticSpacing.xl
5111
- },
5102
+ lg: "px-lg"},
5112
5103
  vertical: {
5113
5104
  xs: "py-xs",
5114
5105
  // 4px (0.25rem) - maps to semanticSpacing.xs
5115
- sm: "py-sm",
5116
- // 8px (0.5rem) - maps to semanticSpacing.sm
5117
- md: "py-md"
5118
- // 16px (1rem) - maps to semanticSpacing.md
5119
- }
5106
+ sm: "py-sm"}
5120
5107
  },
5121
5108
  /**
5122
5109
  * Layout tokens
@@ -5147,17 +5134,12 @@ var LINK_TOKENS = {
5147
5134
  * @see docs/architecture/TYPOGRAPHY_AUTHORITY_CONTRACT.md
5148
5135
  */
5149
5136
  fontSize: {
5150
- xs: "text-xs",
5151
5137
  // References fontSize.xs[0] from Typography Authority (~12px)
5152
5138
  sm: "text-xs",
5153
5139
  // References fontSize.xs[0] from Typography Authority (~12px)
5154
5140
  md: "text-sm",
5155
5141
  // References fontSize.sm[0] from Typography Authority (~14px)
5156
- lg: "text-sm",
5157
- // References fontSize.sm[0] from Typography Authority (~14px)
5158
- xl: "text-base"
5159
- // References fontSize.base[0] from Typography Authority (~16px)
5160
- },
5142
+ lg: "text-sm"},
5161
5143
  /**
5162
5144
  * Border radius for outline and ghost variants
5163
5145
  * References componentRadius from Radius Authority
@@ -5225,15 +5207,15 @@ var LINK_TOKENS = {
5225
5207
  // Underline on hover
5226
5208
  },
5227
5209
  secondary: {
5228
- text: "text-secondary-foreground",
5210
+ text: "text-secondary",
5229
5211
  // Secondary text using CSS var
5230
5212
  hover: "hover:underline"
5231
5213
  // Underline on hover
5232
5214
  },
5233
5215
  accent: {
5234
- text: "text-accent-foreground",
5235
- // Accent text using CSS var
5236
- hover: "hover:text-accent-foreground/80",
5216
+ text: "text-accent",
5217
+ // Accent text using CSS var (accent color, not accent-foreground)
5218
+ hover: "hover:text-accent/80",
5237
5219
  // Accent hover text
5238
5220
  underline: "hover:underline"
5239
5221
  // Underline on hover
@@ -6688,10 +6670,10 @@ var buttonVariants = tokenCVA({
6688
6670
  destructive: `${BUTTON_TOKENS.variant.destructive.background} ${BUTTON_TOKENS.variant.destructive.text} ${BUTTON_TOKENS.shadow.default} ${BUTTON_TOKENS.variant.destructive.hover} ${BUTTON_TOKENS.variant.destructive.active} ${BUTTON_TOKENS.variant.destructive.disabled.background} ${BUTTON_TOKENS.variant.destructive.disabled.text}`
6689
6671
  },
6690
6672
  size: {
6691
- sm: `${BUTTON_TOKENS.height.sm} ${BUTTON_TOKENS.radius} ${BUTTON_TOKENS.padding.horizontal.sm} ${BUTTON_TOKENS.padding.vertical.sm} ${BUTTON_TOKENS.fontSize.sm} ${BUTTON_TOKENS.gap.sm} [&_svg]:${BUTTON_TOKENS.iconSize.sm}`,
6692
- md: `${BUTTON_TOKENS.height.md} ${BUTTON_TOKENS.radius} ${BUTTON_TOKENS.padding.horizontal.md} ${BUTTON_TOKENS.padding.vertical.md} ${BUTTON_TOKENS.fontSize.md} ${BUTTON_TOKENS.gap.md} [&_svg]:${BUTTON_TOKENS.iconSize.md}`,
6693
- lg: `${BUTTON_TOKENS.height.lg} ${BUTTON_TOKENS.radius} ${BUTTON_TOKENS.padding.horizontal.lg} ${BUTTON_TOKENS.padding.vertical.md} ${BUTTON_TOKENS.fontSize.lg} ${BUTTON_TOKENS.gap.lg} [&_svg]:${BUTTON_TOKENS.iconSize.lg}`,
6694
- icon: `${BUTTON_TOKENS.height.icon} ${BUTTON_TOKENS.width.icon} [&_svg]:${BUTTON_TOKENS.iconSize.icon}`
6673
+ sm: `${BUTTON_TOKENS.height.sm} ${BUTTON_TOKENS.radius} ${BUTTON_TOKENS.padding.horizontal.sm} ${BUTTON_TOKENS.padding.vertical.sm} ${BUTTON_TOKENS.fontSize.sm} ${BUTTON_TOKENS.gap.sm} ${BUTTON_TOKENS.iconSize.sm}`,
6674
+ md: `${BUTTON_TOKENS.height.md} ${BUTTON_TOKENS.radius} ${BUTTON_TOKENS.padding.horizontal.md} ${BUTTON_TOKENS.padding.vertical.md} ${BUTTON_TOKENS.fontSize.md} ${BUTTON_TOKENS.gap.md} ${BUTTON_TOKENS.iconSize.md}`,
6675
+ lg: `${BUTTON_TOKENS.height.lg} ${BUTTON_TOKENS.radius} ${BUTTON_TOKENS.padding.horizontal.lg} ${BUTTON_TOKENS.padding.vertical.md} ${BUTTON_TOKENS.fontSize.lg} ${BUTTON_TOKENS.gap.lg} ${BUTTON_TOKENS.iconSize.lg}`,
6676
+ icon: `${BUTTON_TOKENS.height.icon} ${BUTTON_TOKENS.width.icon} ${BUTTON_TOKENS.iconSize.icon}`
6695
6677
  }
6696
6678
  },
6697
6679
  defaultVariants: {
@@ -6700,16 +6682,8 @@ var buttonVariants = tokenCVA({
6700
6682
  }
6701
6683
  });
6702
6684
  var Button = React49.forwardRef(
6703
- ({ className, variant, size, asChild = false, leftIcon, rightIcon, children, ...props }, ref) => {
6704
- const Comp = asChild ? Slot : "button";
6705
- const finalClassName = cn(buttonVariants({ variant, size, className }));
6706
- const iconSizeMap = {
6707
- "size-3.5": "[&_svg]:w-3.5 [&_svg]:h-3.5",
6708
- "size-4": "[&_svg]:w-4 [&_svg]:h-4",
6709
- "size-5": "[&_svg]:w-5 [&_svg]:h-5"
6710
- };
6711
- const iconSizeToken = size ? BUTTON_TOKENS.iconSize[size] : BUTTON_TOKENS.iconSize.md;
6712
- const iconSizeClass = iconSizeMap[iconSizeToken] || "[&_svg]:w-4 [&_svg]:h-4";
6685
+ ({ variant, size, asChild = false, leftIcon, rightIcon, children, ...props }, ref) => {
6686
+ const finalClassName = buttonVariants({ variant, size });
6713
6687
  if (typeof window !== "undefined" && variant === "primary") {
6714
6688
  const hasHoverClass = finalClassName.includes(
6715
6689
  "hover:bg-[hsl(var(--button-primary-hover-bg))]"
@@ -6740,28 +6714,33 @@ var Button = React49.forwardRef(
6740
6714
  }).catch(() => {
6741
6715
  });
6742
6716
  }
6717
+ if (asChild && (leftIcon || rightIcon)) {
6718
+ if (!React49.isValidElement(children)) {
6719
+ const Comp2 = "button";
6720
+ return /* @__PURE__ */ jsxs(Comp2, { className: finalClassName, ref, ...props, children: [
6721
+ leftIcon && /* @__PURE__ */ jsx("span", { className: "pointer-events-none relative z-10 inline-flex items-center [&_svg]:text-current", children: leftIcon }),
6722
+ children,
6723
+ rightIcon && /* @__PURE__ */ jsx("span", { className: "pointer-events-none relative z-10 inline-flex items-center [&_svg]:text-current", children: rightIcon })
6724
+ ] });
6725
+ }
6726
+ const iconWrapperClass = "pointer-events-none relative z-10 inline-flex items-center [&_svg]:text-current";
6727
+ const childProps = children.props;
6728
+ const clonedChild = React49.cloneElement(children, {
6729
+ className: cn(finalClassName, childProps.className),
6730
+ ...props,
6731
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [
6732
+ leftIcon && /* @__PURE__ */ jsx("span", { className: iconWrapperClass, children: leftIcon }),
6733
+ childProps.children,
6734
+ rightIcon && /* @__PURE__ */ jsx("span", { className: iconWrapperClass, children: rightIcon })
6735
+ ] })
6736
+ });
6737
+ return /* @__PURE__ */ jsx(Slot, { ref, children: clonedChild });
6738
+ }
6739
+ const Comp = asChild ? Slot : "button";
6743
6740
  return /* @__PURE__ */ jsxs(Comp, { className: finalClassName, ref, ...props, children: [
6744
- leftIcon && /* @__PURE__ */ jsx(
6745
- "span",
6746
- {
6747
- className: cn(
6748
- "pointer-events-none relative z-10 inline-flex items-center [&_svg]:text-current",
6749
- iconSizeClass
6750
- ),
6751
- children: leftIcon
6752
- }
6753
- ),
6741
+ leftIcon && /* @__PURE__ */ jsx("span", { className: "pointer-events-none relative z-10 inline-flex items-center [&_svg]:text-current", children: leftIcon }),
6754
6742
  children,
6755
- rightIcon && /* @__PURE__ */ jsx(
6756
- "span",
6757
- {
6758
- className: cn(
6759
- "pointer-events-none relative z-10 inline-flex items-center [&_svg]:text-current",
6760
- iconSizeClass
6761
- ),
6762
- children: rightIcon
6763
- }
6764
- )
6743
+ rightIcon && /* @__PURE__ */ jsx("span", { className: "pointer-events-none relative z-10 inline-flex items-center [&_svg]:text-current", children: rightIcon })
6765
6744
  ] });
6766
6745
  }
6767
6746
  );
@@ -6806,13 +6785,13 @@ var textVariants = cva("text-foreground", {
6806
6785
  }
6807
6786
  });
6808
6787
  var Text = React49.forwardRef(
6809
- ({ className, size, weight, muted, variant, ...props }, ref) => {
6788
+ ({ size, weight, muted, variant, ...props }, ref) => {
6810
6789
  const isMuted = muted !== void 0 ? muted : variant === "muted";
6811
6790
  return /* @__PURE__ */ jsx(
6812
6791
  "span",
6813
6792
  {
6814
6793
  ref,
6815
- className: cn(textVariants({ size, weight, muted: isMuted, variant }), className),
6794
+ className: textVariants({ size, weight, muted: isMuted, variant }),
6816
6795
  ...props
6817
6796
  }
6818
6797
  );
@@ -6853,16 +6832,6 @@ var Alert = React49.forwardRef(
6853
6832
  }
6854
6833
  );
6855
6834
  Alert.displayName = "Alert";
6856
- var LINK_VARIANTS = [
6857
- "primary",
6858
- "secondary",
6859
- "accent",
6860
- "outline",
6861
- "ghost",
6862
- "link",
6863
- "destructive"
6864
- ];
6865
- var LINK_SIZES = ["xs", "sm", "md", "lg", "xl"];
6866
6835
  var linkVariants = tokenCVA({
6867
6836
  base: `${LINK_TOKENS.layout} ${LINK_TOKENS.fontWeight} ${LINK_TOKENS.transition.colors} ${LINK_TOKENS.focus.outline} ${LINK_TOKENS.focus.ring} ${LINK_TOKENS.focus.offset} ${LINK_TOKENS.state.disabled.pointerEvents} ${LINK_TOKENS.state.disabled.opacity}`,
6868
6837
  variants: {
@@ -6876,11 +6845,9 @@ var linkVariants = tokenCVA({
6876
6845
  destructive: `${LINK_TOKENS.variant.destructive.text} ${LINK_TOKENS.variant.destructive.hover} ${LINK_TOKENS.underlineOffset} ${LINK_TOKENS.variant.destructive.underline}`
6877
6846
  },
6878
6847
  size: {
6879
- xs: `${LINK_TOKENS.height.xs} ${LINK_TOKENS.fontSize.xs} ${LINK_TOKENS.padding.horizontal.xs} ${LINK_TOKENS.padding.vertical.xs}`,
6880
6848
  sm: `${LINK_TOKENS.height.sm} ${LINK_TOKENS.fontSize.sm} ${LINK_TOKENS.padding.horizontal.sm} ${LINK_TOKENS.padding.vertical.xs}`,
6881
6849
  md: `${LINK_TOKENS.height.md} ${LINK_TOKENS.fontSize.md} ${LINK_TOKENS.padding.horizontal.md} ${LINK_TOKENS.padding.vertical.sm}`,
6882
- lg: `${LINK_TOKENS.height.lg} ${LINK_TOKENS.fontSize.lg} ${LINK_TOKENS.padding.horizontal.lg} ${LINK_TOKENS.padding.vertical.sm}`,
6883
- xl: `${LINK_TOKENS.height.xl} ${LINK_TOKENS.fontSize.xl} ${LINK_TOKENS.padding.horizontal.xl} ${LINK_TOKENS.padding.vertical.md}`
6850
+ lg: `${LINK_TOKENS.height.lg} ${LINK_TOKENS.fontSize.lg} ${LINK_TOKENS.padding.horizontal.lg} ${LINK_TOKENS.padding.vertical.sm}`
6884
6851
  }
6885
6852
  },
6886
6853
  defaultVariants: {
@@ -6889,13 +6856,38 @@ var linkVariants = tokenCVA({
6889
6856
  }
6890
6857
  });
6891
6858
  var Link = React49.forwardRef(
6892
- ({ className, variant, size, asChild = false, leftIcon, rightIcon, children, ...props }, ref) => {
6893
- const Comp = asChild ? Slot : "a";
6894
- return /* @__PURE__ */ jsxs(Comp, { className: cn(linkVariants({ variant, size, className })), ref, ...props, children: [
6895
- leftIcon && /* @__PURE__ */ jsx("span", { className: LINK_TOKENS.iconWrapper, children: leftIcon }),
6896
- children,
6897
- rightIcon && /* @__PURE__ */ jsx("span", { className: LINK_TOKENS.iconWrapper, children: rightIcon })
6898
- ] });
6859
+ ({ variant, size, leftIcon, rightIcon, children, disabled, onClick, href, tabIndex, ...props }, ref) => {
6860
+ const handleClick = React49.useCallback(
6861
+ (e) => {
6862
+ if (disabled) {
6863
+ e.preventDefault();
6864
+ e.stopPropagation();
6865
+ return;
6866
+ }
6867
+ onClick?.(e);
6868
+ },
6869
+ [disabled, onClick]
6870
+ );
6871
+ const finalClassName = linkVariants({ variant, size });
6872
+ const finalTabIndex = disabled ? tabIndex ?? -1 : tabIndex;
6873
+ const finalAriaDisabled = disabled ? true : void 0;
6874
+ return /* @__PURE__ */ jsxs(
6875
+ "a",
6876
+ {
6877
+ className: finalClassName,
6878
+ ref,
6879
+ href,
6880
+ tabIndex: finalTabIndex,
6881
+ "aria-disabled": finalAriaDisabled,
6882
+ onClick: handleClick,
6883
+ ...props,
6884
+ children: [
6885
+ leftIcon && /* @__PURE__ */ jsx("span", { className: LINK_TOKENS.iconWrapper, children: leftIcon }),
6886
+ children,
6887
+ rightIcon && /* @__PURE__ */ jsx("span", { className: LINK_TOKENS.iconWrapper, children: rightIcon })
6888
+ ]
6889
+ }
6890
+ );
6899
6891
  }
6900
6892
  );
6901
6893
  Link.displayName = "Link";
@@ -7015,17 +7007,9 @@ var headingVariants = cva("font-display text-foreground", {
7015
7007
  }
7016
7008
  });
7017
7009
  var Heading = React49.forwardRef(
7018
- ({ className, level = 1, weight, muted, as, children, ...props }, ref) => {
7010
+ ({ level = 1, weight, muted, as, children, ...props }, ref) => {
7019
7011
  const Component = as || `h${level}`;
7020
- return /* @__PURE__ */ jsx(
7021
- Component,
7022
- {
7023
- ref,
7024
- className: cn(headingVariants({ level, weight, muted }), className),
7025
- ...props,
7026
- children
7027
- }
7028
- );
7012
+ return /* @__PURE__ */ jsx(Component, { ref, className: headingVariants({ level, weight, muted }), ...props, children });
7029
7013
  }
7030
7014
  );
7031
7015
  Heading.displayName = "Heading";
@@ -8005,7 +7989,6 @@ var checkboxVariants = cva(
8005
7989
  );
8006
7990
  var Checkbox = React49.forwardRef(
8007
7991
  ({
8008
- className,
8009
7992
  variant,
8010
7993
  size,
8011
7994
  state,
@@ -8067,10 +8050,7 @@ var Checkbox = React49.forwardRef(
8067
8050
  },
8068
8051
  [isDisabled, isControlled, checked, onCheckedChange, onKeyDown]
8069
8052
  );
8070
- const checkboxClasses = cn(
8071
- checkboxVariants({ variant, size, state: effectiveState }),
8072
- className
8073
- );
8053
+ const checkboxClasses = checkboxVariants({ variant, size, state: effectiveState });
8074
8054
  const iconSize = size ? CHECKBOX_TOKENS.icon.size[size] : CHECKBOX_TOKENS.icon.size.md;
8075
8055
  const renderIcon = () => {
8076
8056
  if (indeterminate) {
@@ -8728,10 +8708,13 @@ var labelVariants = cva(
8728
8708
  `${TEXT_TOKENS.fontSize.sm} ${TEXT_TOKENS.fontWeight.medium} ${TEXT_TOKENS.lineHeight.none} peer-disabled:cursor-not-allowed peer-disabled:opacity-70`
8729
8709
  );
8730
8710
  var Label2 = React49.forwardRef(
8731
- ({ className, required, children, ...props }, ref) => /* @__PURE__ */ jsxs(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props, children: [
8732
- children,
8733
- required && /* @__PURE__ */ jsx("span", { className: cn(FORM_TOKENS.label.requiredMark, "ml-xs"), children: "*" })
8734
- ] })
8711
+ ({ required, children, ...props }, ref) => (
8712
+ // className and style are forbidden from public API - only CVA output is used
8713
+ /* @__PURE__ */ jsxs(LabelPrimitive.Root, { ref, className: labelVariants(), ...props, children: [
8714
+ children,
8715
+ required && /* @__PURE__ */ jsx("span", { className: cn(FORM_TOKENS.label.requiredMark, "ml-xs"), children: "*" })
8716
+ ] })
8717
+ )
8735
8718
  );
8736
8719
  Label2.displayName = LabelPrimitive.Root.displayName;
8737
8720
  var Field = React49.forwardRef(
@@ -8740,11 +8723,9 @@ var Field = React49.forwardRef(
8740
8723
  }
8741
8724
  );
8742
8725
  Field.displayName = "Field";
8743
- var FieldLabel = React49.forwardRef(
8744
- ({ className, ...props }, ref) => {
8745
- return /* @__PURE__ */ jsx(Label2, { ref, className, ...props });
8746
- }
8747
- );
8726
+ var FieldLabel = React49.forwardRef((props, ref) => {
8727
+ return /* @__PURE__ */ jsx(Label2, { ref, ...props });
8728
+ });
8748
8729
  FieldLabel.displayName = "FieldLabel";
8749
8730
  var FieldControl = React49.forwardRef(
8750
8731
  ({ className, children, ...props }, ref) => {
@@ -8752,17 +8733,13 @@ var FieldControl = React49.forwardRef(
8752
8733
  }
8753
8734
  );
8754
8735
  FieldControl.displayName = "FieldControl";
8755
- var FieldDescription = React49.forwardRef(
8756
- ({ className, ...props }, ref) => {
8757
- return /* @__PURE__ */ jsx(Text, { ref, size: "sm", muted: true, className: cn(className), ...props });
8758
- }
8759
- );
8736
+ var FieldDescription = React49.forwardRef((props, ref) => {
8737
+ return /* @__PURE__ */ jsx(Text, { ref, size: "sm", muted: true, ...props });
8738
+ });
8760
8739
  FieldDescription.displayName = "FieldDescription";
8761
- var FieldError = React49.forwardRef(
8762
- ({ className, ...props }, ref) => {
8763
- return /* @__PURE__ */ jsx(Text, { ref, size: "sm", className: cn("text-destructive", className), ...props });
8764
- }
8765
- );
8740
+ var FieldError = React49.forwardRef((props, ref) => {
8741
+ return /* @__PURE__ */ jsx(Text, { ref, size: "sm", variant: "destructive", ...props });
8742
+ });
8766
8743
  FieldError.displayName = "FieldError";
8767
8744
  var FieldRoot = Field;
8768
8745
  FieldRoot.Label = FieldLabel;
@@ -8808,7 +8785,6 @@ var inputVariants = cva(
8808
8785
  );
8809
8786
  var Input = React49.forwardRef(
8810
8787
  ({
8811
- className,
8812
8788
  type = "text",
8813
8789
  variant,
8814
8790
  size,
@@ -8838,8 +8814,7 @@ var Input = React49.forwardRef(
8838
8814
  inputVariants({ variant: baseVariant, size: baseSize, state, fullWidth }),
8839
8815
  // Add padding for icons if present
8840
8816
  iconLeft && INPUT_TOKENS.icon.paddingLeft,
8841
- iconRight && INPUT_TOKENS.icon.paddingRight,
8842
- className
8817
+ iconRight && INPUT_TOKENS.icon.paddingRight
8843
8818
  );
8844
8819
  if (iconLeft || iconRight) {
8845
8820
  return /* @__PURE__ */ jsxs("div", { className: cn("relative", fullWidth !== false && INPUT_TOKENS.width.full), children: [
@@ -8989,7 +8964,6 @@ var RadioGroup = React49.forwardRef(
8989
8964
  RadioGroup.displayName = "RadioGroup";
8990
8965
  var Radio = React49.forwardRef(
8991
8966
  ({
8992
- className,
8993
8967
  variant,
8994
8968
  size,
8995
8969
  state,
@@ -9123,10 +9097,7 @@ var Radio = React49.forwardRef(
9123
9097
  onKeyDown
9124
9098
  ]
9125
9099
  );
9126
- const radioClasses = cn(
9127
- radioVariants({ variant, size: effectiveSize, state: effectiveState }),
9128
- className
9129
- );
9100
+ const radioClasses = radioVariants({ variant, size: effectiveSize, state: effectiveState });
9130
9101
  const dotSize = RADIO_TOKENS.dot.size[effectiveSize];
9131
9102
  const renderDot = () => {
9132
9103
  if (!finalChecked) return null;
@@ -9211,7 +9182,6 @@ var textareaVariants = cva(
9211
9182
  );
9212
9183
  var Textarea = React49.forwardRef(
9213
9184
  ({
9214
- className,
9215
9185
  variant,
9216
9186
  size,
9217
9187
  state,
@@ -9236,7 +9206,7 @@ var Textarea = React49.forwardRef(
9236
9206
  }
9237
9207
  return void 0;
9238
9208
  });
9239
- const textareaClasses = cn(textareaVariants({ variant, size, state, fullWidth }), className);
9209
+ const textareaClasses = textareaVariants({ variant, size, state, fullWidth });
9240
9210
  const currentValue = value ?? defaultValue ?? "";
9241
9211
  const currentLength = typeof currentValue === "string" ? currentValue.length : 0;
9242
9212
  const shouldShowCounter = showCharacterCount && maxLength !== void 0;
@@ -9413,20 +9383,8 @@ var DialogHeader = React49.forwardRef(
9413
9383
  );
9414
9384
  DialogHeader.displayName = "DialogHeader";
9415
9385
  var DialogTitle = React49.forwardRef(
9416
- ({ titleId, className, children, ...props }, ref) => {
9417
- return /* @__PURE__ */ jsx(
9418
- Heading,
9419
- {
9420
- ref,
9421
- as: "h2",
9422
- level: 4,
9423
- weight: "semibold",
9424
- id: titleId,
9425
- className: cn(className),
9426
- ...props,
9427
- children
9428
- }
9429
- );
9386
+ ({ titleId, children, ...props }, ref) => {
9387
+ return /* @__PURE__ */ jsx(Heading, { ref, as: "h2", level: 4, weight: "semibold", id: titleId, ...props, children });
9430
9388
  }
9431
9389
  );
9432
9390
  DialogTitle.displayName = "DialogTitle";
@@ -10491,7 +10449,7 @@ function useNotificationCenterContext() {
10491
10449
  }
10492
10450
  return context;
10493
10451
  }
10494
- var NotificationCenterDismissAll = React49.forwardRef(({ confirm = false, confirmMessage = "Clear all notifications?", className, ...props }, ref) => {
10452
+ var NotificationCenterDismissAll = React49.forwardRef(({ confirm = false, confirmMessage = "Clear all notifications?", ...props }, ref) => {
10495
10453
  const { clearAll, getAll } = useNotificationCenterContext();
10496
10454
  const notifications = getAll();
10497
10455
  const handleClick = () => {
@@ -10515,7 +10473,6 @@ var NotificationCenterDismissAll = React49.forwardRef(({ confirm = false, confir
10515
10473
  size: "sm",
10516
10474
  onClick: handleClick,
10517
10475
  "aria-label": "Clear all notifications",
10518
- className,
10519
10476
  ...props,
10520
10477
  children: "Clear all"
10521
10478
  }
@@ -10544,7 +10501,6 @@ var NotificationCenterGroupHeader = React49.forwardRef(
10544
10501
  onClick: onToggleCollapse,
10545
10502
  "aria-label": collapsed ? "Expand group" : "Collapse group",
10546
10503
  "aria-expanded": !collapsed,
10547
- className: "h-6 w-6",
10548
10504
  children: collapsed ? /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx(ChevronUp, { className: "h-4 w-4" })
10549
10505
  }
10550
10506
  )
@@ -10638,7 +10594,6 @@ var NotificationCenterItem = React49.forwardRef(
10638
10594
  e.stopPropagation();
10639
10595
  notification.action?.onClick();
10640
10596
  },
10641
- className: "h-7 px-xs text-xs",
10642
10597
  children: notification.action.label
10643
10598
  }
10644
10599
  ) })
@@ -10650,7 +10605,6 @@ var NotificationCenterItem = React49.forwardRef(
10650
10605
  size: "icon",
10651
10606
  onClick: handleDismiss,
10652
10607
  "aria-label": "Dismiss notification",
10653
- className: "absolute right-xs top-xs h-6 w-6 opacity-0 transition-opacity hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 group-hover:opacity-100",
10654
10608
  children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
10655
10609
  }
10656
10610
  )
@@ -10948,7 +10902,6 @@ var NotificationCenterPanel = React49.forwardRef(
10948
10902
  size: "icon",
10949
10903
  onClick: onClose,
10950
10904
  "aria-label": "Close notifications",
10951
- className: "h-8 w-8",
10952
10905
  children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
10953
10906
  }
10954
10907
  )
@@ -10992,10 +10945,10 @@ var NotificationCenterPanel = React49.forwardRef(
10992
10945
  }
10993
10946
  );
10994
10947
  NotificationCenterPanel.displayName = "NotificationCenter.Panel";
10995
- var NotificationCenterTrigger = React49.forwardRef(({ onClick, showBadge = true, className, ...props }, ref) => {
10948
+ var NotificationCenterTrigger = React49.forwardRef(({ onClick, showBadge = true, ...props }, ref) => {
10996
10949
  const { getUnreadCount } = useNotificationCenterContext();
10997
10950
  const unreadCount = getUnreadCount();
10998
- return /* @__PURE__ */ jsxs(
10951
+ return /* @__PURE__ */ jsx(
10999
10952
  Button,
11000
10953
  {
11001
10954
  ref,
@@ -11003,9 +10956,8 @@ var NotificationCenterTrigger = React49.forwardRef(({ onClick, showBadge = true,
11003
10956
  size: "icon",
11004
10957
  onClick,
11005
10958
  "aria-label": `Open notifications${unreadCount > 0 ? ` (${unreadCount} unread)` : ""}`,
11006
- className: cn("relative", className),
11007
10959
  ...props,
11008
- children: [
10960
+ children: /* @__PURE__ */ jsxs("span", { className: "relative", children: [
11009
10961
  /* @__PURE__ */ jsx(Bell, { className: "h-5 w-5" }),
11010
10962
  showBadge && unreadCount > 0 && /* @__PURE__ */ jsx(
11011
10963
  "span",
@@ -11017,7 +10969,7 @@ var NotificationCenterTrigger = React49.forwardRef(({ onClick, showBadge = true,
11017
10969
  children: unreadCount > 99 ? "99+" : unreadCount
11018
10970
  }
11019
10971
  )
11020
- ]
10972
+ ] })
11021
10973
  }
11022
10974
  );
11023
10975
  });
@@ -11845,18 +11797,7 @@ var BreadcrumbsRoot = React49.forwardRef(
11845
11797
  disabled: item.disabled,
11846
11798
  children: [
11847
11799
  index > 0 && /* @__PURE__ */ jsx(BreadcrumbsSeparator, { children: separator || defaultSeparator }),
11848
- item.href && !isLast && !item.disabled ? /* @__PURE__ */ jsx(
11849
- "a",
11850
- {
11851
- href: item.href,
11852
- className: cn(
11853
- NAVIGATION_TOKENS.states.default.text,
11854
- NAVIGATION_TOKENS.states.hover.text,
11855
- MOTION_TOKENS.transition.colors
11856
- ),
11857
- children: item.label
11858
- }
11859
- ) : /* @__PURE__ */ jsx(
11800
+ item.href && !isLast && !item.disabled ? /* @__PURE__ */ jsx(Link, { href: item.href, variant: "link", children: item.label }) : /* @__PURE__ */ jsx(
11860
11801
  "span",
11861
11802
  {
11862
11803
  className: cn(
@@ -12775,4 +12716,4 @@ var Icon2 = React49.forwardRef(
12775
12716
  );
12776
12717
  Icon2.displayName = "Icon";
12777
12718
 
12778
- export { ALERT_TOKENS, Alert, BADGE_VARIANTS, BUTTON_TOKENS, Backdrop, Badge, Box, Breadcrumbs, Button, CARD_TOKENS, CHECKBOX_TOKENS, Card, CardBody, CardFooter, CardHeader, Checkbox, Column, Container, Surface as ContainerSurface, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DATA_TOKENS, DataListRoot as DataList, DataListItem, DataListLabel, DataListRoot, DataListValue, Dialog, DialogBody, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, EmptyState, EmptyStateAction, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, FieldRoot as Field, Flex, Grid, Heading, HoverCardContent, HoverCardRoot, HoverCardTrigger, ICONS_MAP, ICON_TOKENS, INPUT_TOKENS, Icon2 as Icon, IconArrowRight, IconCalendar, IconCheck, IconChevronDown, IconChevronRight, IconClose, IconError, IconInfo, IconLocation, IconMenu, IconSearch, IconSuccess, IconWarning, Input, LINK_SIZES, LINK_VARIANTS, Label2 as Label, Link, MENU_TOKENS, MOTION_TOKENS, Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalRoot, ModalTitle, ModalTrigger, NAVIGATION_TOKENS, NOTIFICATION_TOKENS, NotificationCenter, NotificationCenterDismissAll, NotificationCenterGroupHeader, NotificationCenterItem, NotificationCenterList, NotificationCenterPanel, NotificationCenterProvider, NotificationCenterTrigger, OVERLAY_TOKENS, POPOVER_TOKENS, Pagination, Portal3 as Portal, RADIO_TOKENS, Radio, RadioGroup, Row, SECTION_TOKENS, SURFACE_TOKENS, SWITCH_TOKENS, Section, SegmentedControl, Select, SelectContent, SelectGroup, SelectIcon, SelectItem, SelectItemIndicator, SelectItemText, SelectLabel, SelectRoot, SelectSeparator, SelectTrigger, SelectValue, SelectViewport, Skeleton, Stack, Stepper, Surface, TEXT_TOKENS, TOAST_TOKENS, TOOLTIP_TOKENS, TableRoot as Table, TableBody, TableCell, TableEmpty, TableExpandableContent, TableHead, TableHeader, TableLoadingState, TableRoot, TableRow, TableSortIcon, Tabs, Text, Textarea, Toast, ToastProvider, ToastViewport, Toaster, UI_COLORS, accentColoredShadows, accentColors, alertVariants, allCSSVariables, allCSSVariablesCSS, animations, badgeVariants, baseColors, borderRadius, buttonVariants, chartColors, checkboxVariants, colorCSSVariables, componentRadius, componentShadowMapping, surfaceVariants as containerSurfaceVariants, cssVariableColorTokens, durations, easings, elevationShadows, focusRings, fontFamily, fontSize, fontSizeWithMd, fontWeight, generateCSSVariablesCSS, glowEffects, headingVariants, iconVariants, inputVariants, keyframes, labelVariants, layoutSpacing, letterSpacing, lineHeight, linkVariants, motionCSSVariables, motionV2CSSVariables, motionV2Combined, motionV2Durations, motionV2Easings, motionV2Fade, motionV2Scale, motionV2Slide, motionV2TailwindConfig, motionV2Transitions, primaryColoredShadows, primaryColors, radioVariants, radiusCSSVariables, reducedMotion, secondaryColors, segmentedControlItemVariants, segmentedControlRootVariants, semanticColors, semanticSpacing, shadowBase, shadowCSSVariables, shadowOpacity, skeletonVariants, spacing, spacingCSSVariables, springs, surfaceColors, surfaceVariants, tailwindMotionConfig, tailwindRadiusConfig, tailwindShadowConfig, tailwindSpacingConfig, tailwindThemeColors, tailwindTypographyConfig, textColors, textStyles, textVariants, textareaVariants, tokenSystemSummary, transitions, typographyCSSVariables, useNotificationCenter, useNotificationCenterContext, useTableContext, useToast };
12719
+ export { ALERT_TOKENS, Alert, BADGE_VARIANTS, BUTTON_TOKENS, Backdrop, Badge, Box, Breadcrumbs, Button, CARD_TOKENS, CHECKBOX_TOKENS, Card, CardBody, CardFooter, CardHeader, Checkbox, Column, Container, Surface as ContainerSurface, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DATA_TOKENS, DataListRoot as DataList, DataListItem, DataListLabel, DataListRoot, DataListValue, Dialog, DialogBody, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, EmptyState, EmptyStateAction, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, FieldRoot as Field, Flex, Grid, Heading, HoverCardContent, HoverCardRoot, HoverCardTrigger, ICONS_MAP, ICON_TOKENS, INPUT_TOKENS, Icon2 as Icon, IconArrowRight, IconCalendar, IconCheck, IconChevronDown, IconChevronRight, IconClose, IconError, IconInfo, IconLocation, IconMenu, IconSearch, IconSuccess, IconWarning, Input, Label2 as Label, Link, MENU_TOKENS, MOTION_TOKENS, Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalRoot, ModalTitle, ModalTrigger, NAVIGATION_TOKENS, NOTIFICATION_TOKENS, NotificationCenter, NotificationCenterDismissAll, NotificationCenterGroupHeader, NotificationCenterItem, NotificationCenterList, NotificationCenterPanel, NotificationCenterProvider, NotificationCenterTrigger, OVERLAY_TOKENS, POPOVER_TOKENS, Pagination, Portal3 as Portal, RADIO_TOKENS, Radio, RadioGroup, Row, SECTION_TOKENS, SURFACE_TOKENS, SWITCH_TOKENS, Section, SegmentedControl, Select, SelectContent, SelectGroup, SelectIcon, SelectItem, SelectItemIndicator, SelectItemText, SelectLabel, SelectRoot, SelectSeparator, SelectTrigger, SelectValue, SelectViewport, Skeleton, Stack, Stepper, Surface, TEXT_TOKENS, TOAST_TOKENS, TOOLTIP_TOKENS, TableRoot as Table, TableBody, TableCell, TableEmpty, TableExpandableContent, TableHead, TableHeader, TableLoadingState, TableRoot, TableRow, TableSortIcon, Tabs, Text, Textarea, Toast, ToastProvider, ToastViewport, Toaster, UI_COLORS, accentColoredShadows, accentColors, alertVariants, allCSSVariables, allCSSVariablesCSS, animations, badgeVariants, baseColors, borderRadius, chartColors, checkboxVariants, colorCSSVariables, componentRadius, componentShadowMapping, surfaceVariants as containerSurfaceVariants, cssVariableColorTokens, durations, easings, elevationShadows, focusRings, fontFamily, fontSize, fontSizeWithMd, fontWeight, generateCSSVariablesCSS, glowEffects, headingVariants, iconVariants, inputVariants, keyframes, labelVariants, layoutSpacing, letterSpacing, lineHeight, linkVariants, motionCSSVariables, motionV2CSSVariables, motionV2Combined, motionV2Durations, motionV2Easings, motionV2Fade, motionV2Scale, motionV2Slide, motionV2TailwindConfig, motionV2Transitions, primaryColoredShadows, primaryColors, radioVariants, radiusCSSVariables, reducedMotion, secondaryColors, segmentedControlItemVariants, segmentedControlRootVariants, semanticColors, semanticSpacing, shadowBase, shadowCSSVariables, shadowOpacity, skeletonVariants, spacing, spacingCSSVariables, springs, surfaceColors, surfaceVariants, tailwindMotionConfig, tailwindRadiusConfig, tailwindShadowConfig, tailwindSpacingConfig, tailwindThemeColors, tailwindTypographyConfig, textColors, textStyles, textVariants, textareaVariants, tokenSystemSummary, transitions, typographyCSSVariables, useNotificationCenter, useNotificationCenterContext, useTableContext, useToast };