@yahoo/uds 3.131.0 → 3.132.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.
Files changed (101) hide show
  1. package/dist/components/Banner/Banner.cjs +5 -2
  2. package/dist/components/Banner/Banner.d.cts +9 -0
  3. package/dist/components/Banner/Banner.d.ts +9 -0
  4. package/dist/components/Banner/Banner.js +5 -2
  5. package/dist/components/Divider/Divider.d.cts +2 -2
  6. package/dist/components/Divider/Divider.d.ts +2 -2
  7. package/dist/components/Divider/DividerCore.cjs +17 -10
  8. package/dist/components/Divider/DividerCore.d.cts +10 -4
  9. package/dist/components/Divider/DividerCore.d.ts +10 -4
  10. package/dist/components/Divider/DividerCore.js +17 -10
  11. package/dist/components/Divider/DividerInternal.cjs +15 -11
  12. package/dist/components/Divider/DividerInternal.js +15 -11
  13. package/dist/components/Link.cjs +13 -6
  14. package/dist/components/Link.d.cts +10 -0
  15. package/dist/components/Link.d.ts +10 -0
  16. package/dist/components/Link.js +13 -6
  17. package/dist/components/client/Badge.cjs +10 -4
  18. package/dist/components/client/Badge.d.cts +12 -1
  19. package/dist/components/client/Badge.d.ts +12 -1
  20. package/dist/components/client/Badge.js +10 -4
  21. package/dist/components/client/Button.cjs +20 -9
  22. package/dist/components/client/Button.d.cts +12 -1
  23. package/dist/components/client/Button.d.ts +12 -1
  24. package/dist/components/client/Button.js +20 -9
  25. package/dist/components/client/Checkbox.cjs +14 -6
  26. package/dist/components/client/Checkbox.d.cts +9 -4
  27. package/dist/components/client/Checkbox.d.ts +9 -4
  28. package/dist/components/client/Checkbox.js +14 -6
  29. package/dist/components/client/Chip/Chip.d.cts +1 -1
  30. package/dist/components/client/Chip/Chip.d.ts +1 -1
  31. package/dist/components/client/IconButton.cjs +4 -2
  32. package/dist/components/client/IconButton.d.cts +10 -2
  33. package/dist/components/client/IconButton.d.ts +10 -2
  34. package/dist/components/client/IconButton.js +4 -2
  35. package/dist/components/client/Input/Input.cjs +8 -2
  36. package/dist/components/client/Input/Input.d.cts +3 -0
  37. package/dist/components/client/Input/Input.d.ts +3 -0
  38. package/dist/components/client/Input/Input.js +8 -2
  39. package/dist/components/client/Input/InputHelpTextInternal.cjs +16 -6
  40. package/dist/components/client/Input/InputHelpTextInternal.d.cts +10 -0
  41. package/dist/components/client/Input/InputHelpTextInternal.d.ts +10 -0
  42. package/dist/components/client/Input/InputHelpTextInternal.js +16 -6
  43. package/dist/components/client/Menu/Menu.Content.cjs +2 -1
  44. package/dist/components/client/Menu/Menu.Content.d.cts +7 -0
  45. package/dist/components/client/Menu/Menu.Content.d.ts +7 -0
  46. package/dist/components/client/Menu/Menu.Content.js +2 -1
  47. package/dist/components/client/Menu/Menu.Divider.cjs +8 -10
  48. package/dist/components/client/Menu/Menu.Divider.js +8 -10
  49. package/dist/components/client/Menu/Menu.Item.cjs +23 -14
  50. package/dist/components/client/Menu/Menu.Item.d.cts +11 -0
  51. package/dist/components/client/Menu/Menu.Item.d.ts +11 -0
  52. package/dist/components/client/Menu/Menu.Item.js +24 -15
  53. package/dist/components/client/Menu/Menu.ItemBase.cjs +17 -9
  54. package/dist/components/client/Menu/Menu.ItemBase.d.cts +9 -5
  55. package/dist/components/client/Menu/Menu.ItemBase.d.ts +9 -5
  56. package/dist/components/client/Menu/Menu.ItemBase.js +17 -9
  57. package/dist/components/client/Menu/Menu.ItemCheckbox.cjs +10 -10
  58. package/dist/components/client/Menu/Menu.ItemCheckbox.d.cts +1 -1
  59. package/dist/components/client/Menu/Menu.ItemCheckbox.d.ts +1 -1
  60. package/dist/components/client/Menu/Menu.ItemCheckbox.js +10 -10
  61. package/dist/components/client/Popover/PopoverContent.cjs +4 -1
  62. package/dist/components/client/Popover/PopoverContent.d.cts +3 -0
  63. package/dist/components/client/Popover/PopoverContent.d.ts +3 -0
  64. package/dist/components/client/Popover/PopoverContent.js +4 -1
  65. package/dist/components/client/Radio/Radio.cjs +18 -15
  66. package/dist/components/client/Radio/Radio.d.cts +9 -4
  67. package/dist/components/client/Radio/Radio.d.ts +9 -4
  68. package/dist/components/client/Radio/Radio.js +18 -15
  69. package/dist/components/client/Switch.cjs +14 -6
  70. package/dist/components/client/Switch.d.cts +9 -5
  71. package/dist/components/client/Switch.d.ts +9 -5
  72. package/dist/components/client/Switch.js +14 -6
  73. package/dist/components/client/Tabs/Tab.cjs +11 -5
  74. package/dist/components/client/Tabs/Tab.d.cts +14 -3
  75. package/dist/components/client/Tabs/Tab.d.ts +14 -3
  76. package/dist/components/client/Tabs/Tab.js +11 -5
  77. package/dist/components/client/Toast/UDSToastConfigProvider.d.cts +1 -1
  78. package/dist/components/client/Toast/UDSToastConfigProvider.d.ts +1 -1
  79. package/dist/components/client/Tooltip/TooltipContent.cjs +9 -3
  80. package/dist/components/client/Tooltip/TooltipContent.d.cts +14 -2
  81. package/dist/components/client/Tooltip/TooltipContent.d.ts +14 -2
  82. package/dist/components/client/Tooltip/TooltipContent.js +9 -3
  83. package/dist/components/experimental/client/SwitchV2.cjs +14 -6
  84. package/dist/components/experimental/client/SwitchV2.d.cts +9 -5
  85. package/dist/components/experimental/client/SwitchV2.d.ts +9 -5
  86. package/dist/components/experimental/client/SwitchV2.js +14 -6
  87. package/dist/components/index.d.cts +1 -1
  88. package/dist/components/index.d.ts +1 -1
  89. package/dist/index.d.cts +1 -1
  90. package/dist/index.d.ts +1 -1
  91. package/dist/styles/styler.d.cts +67 -67
  92. package/dist/styles/styler.d.ts +67 -67
  93. package/dist/types/dist/index.d.cts +3 -3
  94. package/dist/types/dist/index.d.ts +3 -3
  95. package/dist/uds/generated/componentData.cjs +1443 -1440
  96. package/dist/uds/generated/componentData.js +1443 -1440
  97. package/dist/uds/generated/tailwindPurge.cjs +73 -73
  98. package/dist/uds/generated/tailwindPurge.js +73 -73
  99. package/generated/componentData.json +2046 -2037
  100. package/generated/tailwindPurge.ts +1 -1
  101. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
 
2
2
  "use client";
3
3
  import { UniversalMenuItemProps } from "../../../types/dist/index.js";
4
+ import { IconPropsWithSVGProps } from "../../../tokens/types.js";
4
5
  import "../../../tokens/index.js";
5
6
  import { PressableProps } from "../Pressable.js";
6
7
  import * as react from "react";
@@ -8,6 +9,9 @@ import { MenuItem, MenuItemCheckbox } from "@ariakit/react";
8
9
 
9
10
  //#region src/components/client/Menu/Menu.ItemBase.d.ts
10
11
  type MenuItemRootComponent = typeof MenuItem | typeof MenuItemCheckbox;
12
+ type DataAttributes = {
13
+ [name: `data-${string}`]: string;
14
+ };
11
15
  interface MenuItemBaseProps extends Omit<PressableProps, 'asChild'>, UniversalMenuItemProps {
12
16
  /** Whether to show the end icon */
13
17
  hideEndIcon?: boolean;
@@ -16,11 +20,11 @@ interface MenuItemBaseProps extends Omit<PressableProps, 'asChild'>, UniversalMe
16
20
  /** Additional props to pass to the root component */
17
21
  rootProps?: Record<string, unknown>;
18
22
  /** Internal overrides for downstream components. */
19
- layerClassNames?: {
20
- root?: string;
21
- text?: string;
22
- startIcon?: string;
23
- endIcon?: string;
23
+ slotProps?: {
24
+ root?: Partial<React.HTMLAttributes<HTMLDivElement> & DataAttributes>;
25
+ text?: Partial<Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'> & DataAttributes>;
26
+ startIcon?: Partial<IconPropsWithSVGProps & DataAttributes>;
27
+ endIcon?: Partial<IconPropsWithSVGProps & DataAttributes>;
24
28
  };
25
29
  }
26
30
  declare const ITEM_CLASS_NAME = "uds-menu-item";
@@ -28,18 +28,22 @@ const buildMenuItemClasses = ({ active, disabled, className }) => {
28
28
  * @private This is an internal component shared by [Menu.Item](https://uds.build/docs/components/menu#menu-item) and [Menu.ItemCheckbox](https://uds.build/docs/components/menu#menu-item-checkbox)
29
29
  * and may change without notice. Please do not use this component directly.
30
30
  */
31
- const MenuItemBase = forwardRef(function MenuItemBase({ spacing = "0", spacingBottom, spacingEnd, spacingHorizontal = "4", spacingStart, spacingTop, spacingVertical = "3.5", columnGap = "2", className, children, endIcon, startIcon, hideEndIcon, active, disabled, as: RootComponent, name, alignItems = "center", justifyContent = "space-between", layerClassNames, slots, rootProps, ...props }, ref) {
31
+ const MenuItemBase = forwardRef(function MenuItemBase({ spacing = "0", spacingBottom, spacingEnd, spacingHorizontal = "4", spacingStart, spacingTop, spacingVertical = "3.5", columnGap = "2", className, children, endIcon, startIcon, hideEndIcon, active, disabled, as: RootComponent, name, alignItems = "center", justifyContent = "space-between", slotProps, slots, rootProps, ...props }, ref) {
32
32
  const hasMultipleChildren = Children.count(children) > 1;
33
33
  const menuItemClassName = buildMenuItemClasses({
34
34
  active,
35
35
  disabled,
36
36
  className
37
37
  });
38
+ const { className: rootClassName, ...rootSlotProps } = slotProps?.root ?? {};
39
+ const { className: textClassName, ...textSlotProps } = slotProps?.text ?? {};
40
+ const { className: startIconClassName, ...startIconSlotProps } = slotProps?.startIcon ?? {};
41
+ const { className: endIconClassName, ...endIconSlotProps } = slotProps?.endIcon ?? {};
38
42
  /**
39
43
  * Get content styles based on children layout needs
40
44
  */
41
45
  const contentStyles = getStyles({
42
- className: cx(`${ITEM_CLASS_NAME}-content truncate`, layerClassNames?.text),
46
+ className: cx(`${ITEM_CLASS_NAME}-content truncate`, textClassName),
43
47
  textAlign: "start",
44
48
  ...hasMultipleChildren && {
45
49
  columnGap,
@@ -66,23 +70,23 @@ const MenuItemBase = forwardRef(function MenuItemBase({ spacing = "0", spacingBo
66
70
  columnGap,
67
71
  alignItems,
68
72
  justifyContent,
69
- className: cx(menuItemClassName, layerClassNames?.root)
73
+ className: cx(menuItemClassName, rootClassName)
70
74
  }),
71
75
  startIcon: getStyles({
72
76
  menuitemSizeStartIcon: "default",
73
- className: layerClassNames?.startIcon
77
+ className: startIconClassName
74
78
  }),
75
79
  endIcon: getStyles({
76
80
  menuitemSizeEndIcon: "default",
77
- className: layerClassNames?.endIcon
81
+ className: endIconClassName
78
82
  })
79
83
  }), [
80
84
  alignItems,
81
85
  columnGap,
82
86
  justifyContent,
83
- layerClassNames?.endIcon,
84
- layerClassNames?.root,
85
- layerClassNames?.startIcon,
87
+ endIconClassName,
88
+ rootClassName,
89
+ startIconClassName,
86
90
  menuItemClassName,
87
91
  spacing,
88
92
  spacingBottom,
@@ -107,6 +111,7 @@ const MenuItemBase = forwardRef(function MenuItemBase({ spacing = "0", spacingBo
107
111
  render: rootRender,
108
112
  disabled,
109
113
  className: classNames.root,
114
+ ...rootSlotProps,
110
115
  children: [/* @__PURE__ */ jsxs(HStack, {
111
116
  gap: columnGap,
112
117
  alignItems: "center",
@@ -125,12 +130,15 @@ const MenuItemBase = forwardRef(function MenuItemBase({ spacing = "0", spacingBo
125
130
  iconProps: {
126
131
  size: "sm",
127
132
  variant: active ? "fill" : "outline",
128
- color: "current"
133
+ color: "current",
134
+ ...endIconSlotProps,
135
+ ...startIconSlotProps
129
136
  }
130
137
  })
131
138
  })
132
139
  }), /* @__PURE__ */ jsx("span", {
133
140
  className: contentStyles,
141
+ ...textSlotProps,
134
142
  children
135
143
  })]
136
144
  }), /* @__PURE__ */ jsx(AnimatePresence, {
@@ -97,23 +97,23 @@ const MenuItemCheckbox = (0, react.forwardRef)(function MenuItemCheckbox({ name,
97
97
  context,
98
98
  checked
99
99
  ]);
100
- const layerClassNames = {
101
- root: require_styles_styler.getStyles({
100
+ const menuSlotProps = {
101
+ root: { className: require_styles_styler.getStyles({
102
102
  menuitemItemCheckboxVariantRoot: "default",
103
103
  menuitemItemCheckboxVariantActiveRoot: isChecked ? "on" : "off"
104
- }),
105
- text: require_styles_styler.getStyles({
104
+ }) },
105
+ text: { className: require_styles_styler.getStyles({
106
106
  menuitemItemCheckboxVariantText: "default",
107
107
  menuitemItemCheckboxVariantActiveText: isChecked ? "on" : "off"
108
- }),
109
- startIcon: require_styles_styler.getStyles({
108
+ }) },
109
+ startIcon: { className: require_styles_styler.getStyles({
110
110
  menuitemItemCheckboxVariantStartIcon: "default",
111
111
  menuitemItemCheckboxVariantActiveStartIcon: isChecked ? "on" : "off"
112
- }),
113
- endIcon: require_styles_styler.getStyles({
112
+ }) },
113
+ endIcon: { className: require_styles_styler.getStyles({
114
114
  menuitemItemCheckboxVariantEndIcon: "default",
115
115
  menuitemItemCheckboxVariantActiveEndIcon: isChecked ? "on" : "off"
116
- })
116
+ }) }
117
117
  };
118
118
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_client_Menu_Menu_ItemBase.MenuItemBase, {
119
119
  ref,
@@ -122,7 +122,7 @@ const MenuItemCheckbox = (0, react.forwardRef)(function MenuItemCheckbox({ name,
122
122
  endIcon,
123
123
  active: isChecked,
124
124
  className: require_styles_styler.cx("uds-menu-item-checkbox", className),
125
- layerClassNames,
125
+ slotProps: menuSlotProps,
126
126
  name,
127
127
  rootProps: {
128
128
  onChange: handleChange,
@@ -88,6 +88,6 @@ interface MenuItemCheckboxProps extends Omit<PressableProps, 'asChild'>, HtmlBut
88
88
  *
89
89
  * @related [Menu](https://uds.build/docs/components/menu), [Menu.Item](https://uds.build/docs/components/menu-item)
90
90
  **/
91
- declare const MenuItemCheckbox: react.ForwardRefExoticComponent<Omit<MenuItemCheckboxProps, "rootProps" | "hideEndIcon" | "active"> & react.RefAttributes<HTMLDivElement>>;
91
+ declare const MenuItemCheckbox: react.ForwardRefExoticComponent<Omit<MenuItemCheckboxProps, "active" | "hideEndIcon" | "rootProps"> & react.RefAttributes<HTMLDivElement>>;
92
92
  //#endregion
93
93
  export { MenuItemCheckbox, type MenuItemCheckboxProps };
@@ -89,6 +89,6 @@ interface MenuItemCheckboxProps extends Omit<PressableProps, 'asChild'>, HtmlBut
89
89
  *
90
90
  * @related [Menu](https://uds.build/docs/components/menu), [Menu.Item](https://uds.build/docs/components/menu-item)
91
91
  **/
92
- declare const MenuItemCheckbox: react.ForwardRefExoticComponent<Omit<MenuItemCheckboxProps, "rootProps" | "hideEndIcon" | "active"> & react.RefAttributes<HTMLDivElement>>;
92
+ declare const MenuItemCheckbox: react.ForwardRefExoticComponent<Omit<MenuItemCheckboxProps, "active" | "hideEndIcon" | "rootProps"> & react.RefAttributes<HTMLDivElement>>;
93
93
  //#endregion
94
94
  export { MenuItemCheckbox, type MenuItemCheckboxProps };
@@ -95,23 +95,23 @@ const MenuItemCheckbox = forwardRef(function MenuItemCheckbox({ name, endIcon =
95
95
  context,
96
96
  checked
97
97
  ]);
98
- const layerClassNames = {
99
- root: getStyles({
98
+ const menuSlotProps = {
99
+ root: { className: getStyles({
100
100
  menuitemItemCheckboxVariantRoot: "default",
101
101
  menuitemItemCheckboxVariantActiveRoot: isChecked ? "on" : "off"
102
- }),
103
- text: getStyles({
102
+ }) },
103
+ text: { className: getStyles({
104
104
  menuitemItemCheckboxVariantText: "default",
105
105
  menuitemItemCheckboxVariantActiveText: isChecked ? "on" : "off"
106
- }),
107
- startIcon: getStyles({
106
+ }) },
107
+ startIcon: { className: getStyles({
108
108
  menuitemItemCheckboxVariantStartIcon: "default",
109
109
  menuitemItemCheckboxVariantActiveStartIcon: isChecked ? "on" : "off"
110
- }),
111
- endIcon: getStyles({
110
+ }) },
111
+ endIcon: { className: getStyles({
112
112
  menuitemItemCheckboxVariantEndIcon: "default",
113
113
  menuitemItemCheckboxVariantActiveEndIcon: isChecked ? "on" : "off"
114
- })
114
+ }) }
115
115
  };
116
116
  return /* @__PURE__ */ jsx(MenuItemBase, {
117
117
  ref,
@@ -120,7 +120,7 @@ const MenuItemCheckbox = forwardRef(function MenuItemCheckbox({ name, endIcon =
120
120
  endIcon,
121
121
  active: isChecked,
122
122
  className: cx("uds-menu-item-checkbox", className),
123
- layerClassNames,
123
+ slotProps: menuSlotProps,
124
124
  name,
125
125
  rootProps: {
126
126
  onChange: handleChange,
@@ -104,6 +104,7 @@ const PopoverContent = (0, react.forwardRef)(function PopoverContent({ children,
104
104
  },
105
105
  ref: mergedRef,
106
106
  className: classNames.root,
107
+ ...slotProps?.root,
107
108
  portal: internalContext ? internalContext.portal : true,
108
109
  gutter: internalContext?.hideArrow ? gutter : ARROW_HEIGHT + gutter,
109
110
  updatePosition: onPositionUpdate,
@@ -135,6 +136,7 @@ const PopoverContent = (0, react.forwardRef)(function PopoverContent({ children,
135
136
  ...svgFloatingContentProps,
136
137
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_Box.Box, {
137
138
  className: require_styles_styler.cx(classNames.contentWrapper),
139
+ ...slotProps?.content,
138
140
  style: { paddingInlineEnd: internalContext?.hideDismissButton || disableHorizontalSpacing ? void 0 : require_index.spacingMap[gap] + require_index.spacingMap[spacingHorizontal] + dismissButtonSize },
139
141
  children
140
142
  })
@@ -161,7 +163,8 @@ const PopoverContent = (0, react.forwardRef)(function PopoverContent({ children,
161
163
  !internalContext?.hideArrow && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_ariakit_react.PopoverArrow, {
162
164
  size: 1,
163
165
  ref: arrowRef,
164
- style: { opacity: 0 }
166
+ style: { opacity: 0 },
167
+ ...slotProps?.caret
165
168
  })
166
169
  ]
167
170
  });
@@ -11,6 +11,9 @@ type DataAttributes = {
11
11
  };
12
12
  interface PopoverContentProps extends UniversalPopoverContentProps {
13
13
  slotProps?: {
14
+ root?: Partial<React.HTMLAttributes<HTMLDivElement> & DataAttributes>;
15
+ content?: Partial<React.HTMLAttributes<HTMLDivElement> & DataAttributes>;
16
+ caret?: Partial<React.HTMLAttributes<HTMLDivElement> & DataAttributes>;
14
17
  closeIcon?: Partial<IconPropsWithSVGProps & DataAttributes>;
15
18
  closeIconContainer?: Partial<PressableProps & DataAttributes>;
16
19
  svgBase?: {
@@ -12,6 +12,9 @@ type DataAttributes = {
12
12
  };
13
13
  interface PopoverContentProps extends UniversalPopoverContentProps {
14
14
  slotProps?: {
15
+ root?: Partial<React.HTMLAttributes<HTMLDivElement> & DataAttributes>;
16
+ content?: Partial<React.HTMLAttributes<HTMLDivElement> & DataAttributes>;
17
+ caret?: Partial<React.HTMLAttributes<HTMLDivElement> & DataAttributes>;
15
18
  closeIcon?: Partial<IconPropsWithSVGProps & DataAttributes>;
16
19
  closeIconContainer?: Partial<PressableProps & DataAttributes>;
17
20
  svgBase?: {
@@ -102,6 +102,7 @@ const PopoverContent = forwardRef(function PopoverContent({ children, className,
102
102
  },
103
103
  ref: mergedRef,
104
104
  className: classNames.root,
105
+ ...slotProps?.root,
105
106
  portal: internalContext ? internalContext.portal : true,
106
107
  gutter: internalContext?.hideArrow ? gutter : ARROW_HEIGHT + gutter,
107
108
  updatePosition: onPositionUpdate,
@@ -133,6 +134,7 @@ const PopoverContent = forwardRef(function PopoverContent({ children, className,
133
134
  ...svgFloatingContentProps,
134
135
  children: /* @__PURE__ */ jsx(Box, {
135
136
  className: cx(classNames.contentWrapper),
137
+ ...slotProps?.content,
136
138
  style: { paddingInlineEnd: internalContext?.hideDismissButton || disableHorizontalSpacing ? void 0 : spacingMap[gap] + spacingMap[spacingHorizontal] + dismissButtonSize },
137
139
  children
138
140
  })
@@ -159,7 +161,8 @@ const PopoverContent = forwardRef(function PopoverContent({ children, className,
159
161
  !internalContext?.hideArrow && /* @__PURE__ */ jsx(PopoverArrow, {
160
162
  size: 1,
161
163
  ref: arrowRef,
162
- style: { opacity: 0 }
164
+ style: { opacity: 0 },
165
+ ...slotProps?.caret
163
166
  })
164
167
  ]
165
168
  });
@@ -52,9 +52,13 @@ const pressTransition = {
52
52
  *
53
53
  * @related [Radio](https://uds.build/docs/components/Radio).
54
54
  **/
55
- const Radio = (0, react.forwardRef)(function Radio({ id, name: nameProp, label, labelPosition = "start", variant: variantProp = "primary", size = "md", reduceMotion: forceReduceMotion, value: valueProp = "", checked: checkedProp, defaultChecked, disabled, hasError, onChange, onFocus, onBlur, className, style, layerClassNames, ...radioProps }, parentRef) {
55
+ const Radio = (0, react.forwardRef)(function Radio({ id, name: nameProp, label, labelPosition = "start", variant: variantProp = "primary", size = "md", reduceMotion: forceReduceMotion, value: valueProp = "", checked: checkedProp, defaultChecked, disabled, hasError, onChange, onFocus, onBlur, className, style, slotProps, ...radioProps }, parentRef) {
56
56
  const generatedId = (0, react.useId)();
57
57
  const uid = id ?? `uds-radio-${generatedId}`;
58
+ const rootSlotProps = slotProps?.root ?? {};
59
+ const radioSlotProps = slotProps?.radio ?? {};
60
+ const radioIconSlotProps = slotProps?.radioIcon ?? {};
61
+ const labelSlotProps = slotProps?.label ?? {};
58
62
  const innerRef = (0, react.useRef)(null);
59
63
  /**
60
64
  * State
@@ -125,15 +129,11 @@ const Radio = (0, react.forwardRef)(function Radio({ id, name: nameProp, label,
125
129
  display: "flex",
126
130
  flexDirection: labelPosition === "start" ? "row" : "row-reverse",
127
131
  alignItems: "center",
128
- className: require_styles_styler.cx([
129
- {
130
- "cursor-pointer": !disabled,
131
- "cursor-default": disabled,
132
- "opacity-50": disabled
133
- },
134
- className,
135
- layerClassNames?.root
136
- ])
132
+ className: require_styles_styler.cx([{
133
+ "cursor-pointer": !disabled,
134
+ "cursor-default": disabled,
135
+ "opacity-50": disabled
136
+ }, className])
137
137
  }),
138
138
  radio: require_styles_styler.getStyles({
139
139
  radioSizeRadio: size,
@@ -145,8 +145,7 @@ const Radio = (0, react.forwardRef)(function Radio({ id, name: nameProp, label,
145
145
  "uds-ring-within",
146
146
  cssAnimationDuration,
147
147
  "transition-[background-color,border-color]",
148
- "transition-shadow",
149
- layerClassNames?.radio
148
+ "transition-shadow"
150
149
  ])
151
150
  }),
152
151
  radioCircle: require_styles_styler.getStyles({
@@ -162,7 +161,7 @@ const Radio = (0, react.forwardRef)(function Radio({ id, name: nameProp, label,
162
161
  ])
163
162
  }),
164
163
  htmlRadio: require_styles_styler.cx("cursor-[inherit]", "absolute", "opacity-0", "top-1/2", "left-1/2", "w-[calc(100%+2px)]", "h-[calc(100%+2px)]", "transform", "translate-x-[-50%]", "translate-y-[-50%]"),
165
- label: require_styles_styler.cx(labelPosition === "start" ? "text-start" : "text-end", layerClassNames?.label)
164
+ label: require_styles_styler.cx(labelPosition === "start" ? "text-start" : "text-end")
166
165
  };
167
166
  const RootElement = label ? motion_react.m.label : motion_react.m.div;
168
167
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_client_SpringMotionConfig.SpringMotionConfig, {
@@ -178,6 +177,7 @@ const Radio = (0, react.forwardRef)(function Radio({ id, name: nameProp, label,
178
177
  onTap: handleTapEnd,
179
178
  onTapCancel: handleTapEnd,
180
179
  tabIndex: -1,
180
+ ...rootSlotProps,
181
181
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(MotionBox, {
182
182
  position: "relative",
183
183
  borderRadius: "full",
@@ -187,6 +187,7 @@ const Radio = (0, react.forwardRef)(function Radio({ id, name: nameProp, label,
187
187
  className: classNames.radio,
188
188
  animate: motionAnimate,
189
189
  insetShadow: showShadow ? "lg-invert" : "none",
190
+ ...radioSlotProps,
190
191
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
191
192
  type: "radio",
192
193
  tabIndex: 0,
@@ -208,14 +209,16 @@ const Radio = (0, react.forwardRef)(function Radio({ id, name: nameProp, label,
208
209
  className: classNames.htmlRadio
209
210
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_Box.Box, {
210
211
  borderRadius: "full",
211
- className: classNames.radioCircle
212
+ className: classNames.radioCircle,
213
+ ...radioIconSlotProps
212
214
  })]
213
215
  }), label && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_FormLabel.FormLabel, {
214
216
  as: "div",
215
217
  variant: "inherit",
216
218
  color: "inherit",
217
219
  label,
218
- className: classNames.label
220
+ className: classNames.label,
221
+ ...labelSlotProps
219
222
  })]
220
223
  })
221
224
  });
@@ -5,11 +5,16 @@ import React from "react";
5
5
 
6
6
  //#region src/components/client/Radio/Radio.d.ts
7
7
  type NativeInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'value' | 'size' | 'height' | 'width' | 'color' | 'required'>;
8
+ type DataAttributes = {
9
+ [name: `data-${string}`]: string;
10
+ };
8
11
  interface RadioProps extends NativeInputProps, UniversalRadioProps {
9
- layerClassNames?: {
10
- root?: string;
11
- radio?: string;
12
- label?: string;
12
+ /** Props to be passed into various slots within the component. */
13
+ slotProps?: {
14
+ root?: DataAttributes;
15
+ radio?: DataAttributes;
16
+ radioIcon?: DataAttributes;
17
+ label?: DataAttributes;
13
18
  };
14
19
  }
15
20
  declare const RADIO_VARIANTS: RadioVariant[];
@@ -6,11 +6,16 @@ import React from "react";
6
6
 
7
7
  //#region src/components/client/Radio/Radio.d.ts
8
8
  type NativeInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'value' | 'size' | 'height' | 'width' | 'color' | 'required'>;
9
+ type DataAttributes = {
10
+ [name: `data-${string}`]: string;
11
+ };
9
12
  interface RadioProps extends NativeInputProps, UniversalRadioProps {
10
- layerClassNames?: {
11
- root?: string;
12
- radio?: string;
13
- label?: string;
13
+ /** Props to be passed into various slots within the component. */
14
+ slotProps?: {
15
+ root?: DataAttributes;
16
+ radio?: DataAttributes;
17
+ radioIcon?: DataAttributes;
18
+ label?: DataAttributes;
14
19
  };
15
20
  }
16
21
  declare const RADIO_VARIANTS: RadioVariant[];
@@ -49,9 +49,13 @@ const pressTransition = {
49
49
  *
50
50
  * @related [Radio](https://uds.build/docs/components/Radio).
51
51
  **/
52
- const Radio = forwardRef(function Radio({ id, name: nameProp, label, labelPosition = "start", variant: variantProp = "primary", size = "md", reduceMotion: forceReduceMotion, value: valueProp = "", checked: checkedProp, defaultChecked, disabled, hasError, onChange, onFocus, onBlur, className, style, layerClassNames, ...radioProps }, parentRef) {
52
+ const Radio = forwardRef(function Radio({ id, name: nameProp, label, labelPosition = "start", variant: variantProp = "primary", size = "md", reduceMotion: forceReduceMotion, value: valueProp = "", checked: checkedProp, defaultChecked, disabled, hasError, onChange, onFocus, onBlur, className, style, slotProps, ...radioProps }, parentRef) {
53
53
  const generatedId = useId();
54
54
  const uid = id ?? `uds-radio-${generatedId}`;
55
+ const rootSlotProps = slotProps?.root ?? {};
56
+ const radioSlotProps = slotProps?.radio ?? {};
57
+ const radioIconSlotProps = slotProps?.radioIcon ?? {};
58
+ const labelSlotProps = slotProps?.label ?? {};
55
59
  const innerRef = useRef(null);
56
60
  /**
57
61
  * State
@@ -122,15 +126,11 @@ const Radio = forwardRef(function Radio({ id, name: nameProp, label, labelPositi
122
126
  display: "flex",
123
127
  flexDirection: labelPosition === "start" ? "row" : "row-reverse",
124
128
  alignItems: "center",
125
- className: cx([
126
- {
127
- "cursor-pointer": !disabled,
128
- "cursor-default": disabled,
129
- "opacity-50": disabled
130
- },
131
- className,
132
- layerClassNames?.root
133
- ])
129
+ className: cx([{
130
+ "cursor-pointer": !disabled,
131
+ "cursor-default": disabled,
132
+ "opacity-50": disabled
133
+ }, className])
134
134
  }),
135
135
  radio: getStyles({
136
136
  radioSizeRadio: size,
@@ -142,8 +142,7 @@ const Radio = forwardRef(function Radio({ id, name: nameProp, label, labelPositi
142
142
  "uds-ring-within",
143
143
  cssAnimationDuration,
144
144
  "transition-[background-color,border-color]",
145
- "transition-shadow",
146
- layerClassNames?.radio
145
+ "transition-shadow"
147
146
  ])
148
147
  }),
149
148
  radioCircle: getStyles({
@@ -159,7 +158,7 @@ const Radio = forwardRef(function Radio({ id, name: nameProp, label, labelPositi
159
158
  ])
160
159
  }),
161
160
  htmlRadio: cx("cursor-[inherit]", "absolute", "opacity-0", "top-1/2", "left-1/2", "w-[calc(100%+2px)]", "h-[calc(100%+2px)]", "transform", "translate-x-[-50%]", "translate-y-[-50%]"),
162
- label: cx(labelPosition === "start" ? "text-start" : "text-end", layerClassNames?.label)
161
+ label: cx(labelPosition === "start" ? "text-start" : "text-end")
163
162
  };
164
163
  const RootElement = label ? m.label : m.div;
165
164
  return /* @__PURE__ */ jsx(SpringMotionConfig, {
@@ -175,6 +174,7 @@ const Radio = forwardRef(function Radio({ id, name: nameProp, label, labelPositi
175
174
  onTap: handleTapEnd,
176
175
  onTapCancel: handleTapEnd,
177
176
  tabIndex: -1,
177
+ ...rootSlotProps,
178
178
  children: [/* @__PURE__ */ jsxs(MotionBox, {
179
179
  position: "relative",
180
180
  borderRadius: "full",
@@ -184,6 +184,7 @@ const Radio = forwardRef(function Radio({ id, name: nameProp, label, labelPositi
184
184
  className: classNames.radio,
185
185
  animate: motionAnimate,
186
186
  insetShadow: showShadow ? "lg-invert" : "none",
187
+ ...radioSlotProps,
187
188
  children: [/* @__PURE__ */ jsx("input", {
188
189
  type: "radio",
189
190
  tabIndex: 0,
@@ -205,14 +206,16 @@ const Radio = forwardRef(function Radio({ id, name: nameProp, label, labelPositi
205
206
  className: classNames.htmlRadio
206
207
  }), /* @__PURE__ */ jsx(Box, {
207
208
  borderRadius: "full",
208
- className: classNames.radioCircle
209
+ className: classNames.radioCircle,
210
+ ...radioIconSlotProps
209
211
  })]
210
212
  }), label && /* @__PURE__ */ jsx(FormLabel, {
211
213
  as: "div",
212
214
  variant: "inherit",
213
215
  color: "inherit",
214
216
  label,
215
- className: classNames.label
217
+ className: classNames.label,
218
+ ...labelSlotProps
216
219
  })]
217
220
  })
218
221
  });
@@ -46,9 +46,13 @@ const toggleTransition = {
46
46
  *
47
47
  * @related [Checkbox](https://uds.build/docs/components/checkbox).
48
48
  **/
49
- const Switch = (0, react.forwardRef)(function Switch({ id, isOn: isOnProp, defaultIsOn, onChange, label, labelPosition = "start", size = "md", onIcon, offIcon, reduceMotion: forceReduceMotion, disabled, required, onFocus, onBlur, className, style, layerClassNames, ...switchProps }, parentRef) {
49
+ const Switch = (0, react.forwardRef)(function Switch({ id, isOn: isOnProp, defaultIsOn, onChange, label, labelPosition = "start", size = "md", onIcon, offIcon, reduceMotion: forceReduceMotion, disabled, required, onFocus, onBlur, className, style, slotProps, ...switchProps }, parentRef) {
50
50
  const generatedId = (0, react.useId)();
51
51
  const uid = id ?? `uds-input-${generatedId}`;
52
+ const rootSlotProps = slotProps?.root ?? {};
53
+ const switchSlotProps = slotProps?.switch ?? {};
54
+ const handleSlotProps = slotProps?.handle ?? {};
55
+ const labelSlotProps = slotProps?.label ?? {};
52
56
  const innerRef = (0, react.useRef)(null);
53
57
  /**
54
58
  * State
@@ -117,7 +121,7 @@ const Switch = (0, react.forwardRef)(function Switch({ id, isOn: isOnProp, defau
117
121
  "cursor-pointer": !disabled,
118
122
  "cursor-default": disabled,
119
123
  "opacity-50": disabled
120
- }, layerClassNames?.root, className)
124
+ }, className)
121
125
  }),
122
126
  switch: require_styles_styler.getStyles({
123
127
  switchVariantSwitch: "default",
@@ -126,11 +130,11 @@ const Switch = (0, react.forwardRef)(function Switch({ id, isOn: isOnProp, defau
126
130
  borderRadius: "full",
127
131
  position: "relative",
128
132
  alignItems: "center",
129
- className: require_styles_styler.cx("uds-ring", "uds-ring-within", cssAnimationDuration, "transition-[background-color,box-shadow]", layerClassNames?.switch)
133
+ className: require_styles_styler.cx("uds-ring", "uds-ring-within", cssAnimationDuration, "transition-[background-color,box-shadow]")
130
134
  }),
131
135
  handle: require_styles_styler.getStyles({
132
136
  switchSizeHandle: size,
133
- className: require_styles_styler.cx("relative", "pointer-events-none", "uds-border-radius-full", "overflow-hidden", layerClassNames?.handle)
137
+ className: require_styles_styler.cx("relative", "pointer-events-none", "uds-border-radius-full", "overflow-hidden")
134
138
  }),
135
139
  handleCircle: require_styles_styler.getStyles({
136
140
  switchVariantActiveHandle: isOn ? "on" : "off",
@@ -144,7 +148,7 @@ const Switch = (0, react.forwardRef)(function Switch({ id, isOn: isOnProp, defau
144
148
  className: require_styles_styler.cx("absolute", "opacity-0", "top-1/2", "left-1/2", "transform", "translate-x-[-50%]", "translate-y-[-50%]", cssAnimationDuration, "transition-opacity")
145
149
  }),
146
150
  htmlCheckbox: require_styles_styler.cx("cursor-[inherit]", "absolute", "opacity-0", "top-1/2", "left-1/2", "w-[calc(100%+2px)]", "h-[calc(100%+2px)]", "transform", "translate-x-[-50%]", "translate-y-[-50%]"),
147
- label: require_styles_styler.cx(labelPosition === "start" ? "text-start" : "text-end", layerClassNames?.label)
151
+ label: require_styles_styler.cx(labelPosition === "start" ? "text-start" : "text-end")
148
152
  };
149
153
  const RootElement = label ? motion_react.m.label : motion_react.m.div;
150
154
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_client_SpringMotionConfig.SpringMotionConfig, {
@@ -157,8 +161,10 @@ const Switch = (0, react.forwardRef)(function Switch({ id, isOn: isOnProp, defau
157
161
  onHoverStart: handleHoverStart,
158
162
  onHoverEnd: handleHoverEnd,
159
163
  tabIndex: -1,
164
+ ...rootSlotProps,
160
165
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(MotionBox, {
161
166
  className: classNames.switch,
167
+ ...switchSlotProps,
162
168
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
163
169
  type: "checkbox",
164
170
  tabIndex: 0,
@@ -180,6 +186,7 @@ const Switch = (0, react.forwardRef)(function Switch({ id, isOn: isOnProp, defau
180
186
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(MotionBox, {
181
187
  className: classNames.handle,
182
188
  ...motionInitialAndAnimate,
189
+ ...handleSlotProps,
183
190
  children: [
184
191
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_Box.Box, { className: classNames.handleCircle }),
185
192
  onIcon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_IconSlot.IconSlot, {
@@ -208,7 +215,8 @@ const Switch = (0, react.forwardRef)(function Switch({ id, isOn: isOnProp, defau
208
215
  color: "inherit",
209
216
  required,
210
217
  label,
211
- className: classNames.label
218
+ className: classNames.label,
219
+ ...labelSlotProps
212
220
  })]
213
221
  })
214
222
  });
@@ -5,12 +5,16 @@ import React from "react";
5
5
 
6
6
  //#region src/components/client/Switch.d.ts
7
7
  type NativeInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'size' | 'height' | 'width' | 'color' | 'defaultChecked' | 'children'>;
8
+ type DataAttributes = {
9
+ [name: `data-${string}`]: string;
10
+ };
8
11
  interface SwitchProps extends NativeInputProps, UniversalSwitchProps {
9
- layerClassNames?: {
10
- root?: string;
11
- switch?: string;
12
- handle?: string;
13
- label?: string;
12
+ /** Props to be passed into various slots within the component. */
13
+ slotProps?: {
14
+ root?: DataAttributes;
15
+ switch?: DataAttributes;
16
+ handle?: DataAttributes;
17
+ label?: DataAttributes;
14
18
  };
15
19
  }
16
20
  /**
@@ -6,12 +6,16 @@ import React from "react";
6
6
 
7
7
  //#region src/components/client/Switch.d.ts
8
8
  type NativeInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'size' | 'height' | 'width' | 'color' | 'defaultChecked' | 'children'>;
9
+ type DataAttributes = {
10
+ [name: `data-${string}`]: string;
11
+ };
9
12
  interface SwitchProps extends NativeInputProps, UniversalSwitchProps {
10
- layerClassNames?: {
11
- root?: string;
12
- switch?: string;
13
- handle?: string;
14
- label?: string;
13
+ /** Props to be passed into various slots within the component. */
14
+ slotProps?: {
15
+ root?: DataAttributes;
16
+ switch?: DataAttributes;
17
+ handle?: DataAttributes;
18
+ label?: DataAttributes;
15
19
  };
16
20
  }
17
21
  /**