@fabio.caffarello/react-design-system 1.23.9 → 1.23.11

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.
@@ -35,7 +35,7 @@ export interface MenuProps {
35
35
  */
36
36
  declare function Menu({ children, open: controlledOpen, defaultOpen, onOpenChange, placement, }: MenuProps): import("react/jsx-runtime").JSX.Element;
37
37
  declare namespace Menu {
38
- var Trigger: import("react").ForwardRefExoticComponent<import("./MenuTrigger").MenuTriggerProps & import("react").RefAttributes<HTMLDivElement>>;
38
+ var Trigger: import("react").ForwardRefExoticComponent<import("./MenuTrigger").MenuTriggerProps & import("react").RefAttributes<HTMLElement>>;
39
39
  var Content: typeof MenuContent;
40
40
  var Item: import("react").ForwardRefExoticComponent<import("./MenuItem").MenuItemProps & import("react").RefAttributes<HTMLDivElement>>;
41
41
  var Separator: typeof MenuSeparator;
@@ -1,13 +1,35 @@
1
1
  import { type ReactNode, type HTMLAttributes } from "react";
2
- export interface MenuTriggerProps extends HTMLAttributes<HTMLDivElement> {
2
+ export interface MenuTriggerProps extends HTMLAttributes<HTMLElement> {
3
3
  children: ReactNode;
4
+ /**
5
+ * Controls whether MenuTrigger merges its trigger semantics (`role`,
6
+ * `aria-haspopup`, `aria-expanded`, `tabIndex`, `onClick`, `ref`) onto
7
+ * its single child, or wraps the child in a `<div role="button">`.
8
+ *
9
+ * - `true` — always clone the (single, valid) child. Throws via
10
+ * `React.Children.only` if children aren't a single element.
11
+ * - `false` — always wrap in a `<div role="button">` (legacy behavior).
12
+ * - `undefined` (default) — infer: clone when there is exactly one
13
+ * valid React element child; otherwise wrap. This default avoids
14
+ * nested-interactive when the canonical
15
+ * `<MenuTrigger><Button/></MenuTrigger>` pattern is used.
16
+ *
17
+ * Note on history: prior versions accepted this prop but never altered
18
+ * the rendered DOM (the wrapper rendered unconditionally) AND a stale
19
+ * `if (!asChild) setIsOpen(...)` gate suppressed the toggle when
20
+ * `asChild={true}` was set. Both were broken contracts — this version
21
+ * implements `asChild` structurally and removes the gate.
22
+ */
4
23
  asChild?: boolean;
5
24
  }
6
25
  /**
7
26
  * MenuTrigger Component
8
27
  *
9
- * The trigger element that opens/closes the menu.
10
- * Must be used within a Menu component.
28
+ * The trigger element that opens/closes the menu. Must be used within a
29
+ * `<Menu>`. By default, when given a single valid React element child,
30
+ * merges trigger semantics onto that child (no wrapper) — so the typical
31
+ * `<MenuTrigger><Button>Open</Button></MenuTrigger>` renders a single
32
+ * `<button>` instead of a `<div role="button">` wrapping a `<button>`.
11
33
  */
12
- declare const MenuTrigger: import("react").ForwardRefExoticComponent<MenuTriggerProps & import("react").RefAttributes<HTMLDivElement>>;
34
+ declare const MenuTrigger: import("react").ForwardRefExoticComponent<MenuTriggerProps & import("react").RefAttributes<HTMLElement>>;
13
35
  export default MenuTrigger;
@@ -2,19 +2,24 @@ import type { TextareaHTMLAttributes } from "react";
2
2
  interface Props extends TextareaHTMLAttributes<HTMLTextAreaElement> {
3
3
  error?: boolean;
4
4
  resize?: "none" | "both" | "horizontal" | "vertical";
5
+ label?: string;
5
6
  }
6
7
  /**
7
8
  * Textarea Component
8
9
  *
9
10
  * A styled textarea component for longer text input.
10
- * Follows Atomic Design principles as an Atom component.
11
+ *
12
+ * For an accessible name, supply ONE of:
13
+ * - `label` prop (renders a visible `<label>` above the textarea), OR
14
+ * - `aria-label` / `aria-labelledby`, OR
15
+ * - an external `<Label htmlFor={id}>` paired with the same `id` prop
16
+ * (use the Label primitive when you need `variant="required" | "optional"`).
17
+ *
18
+ * In development, a missing accessible name logs a warning to the console.
11
19
  *
12
20
  * @example
13
21
  * ```tsx
14
- * <Textarea
15
- * placeholder="Enter description..."
16
- * rows={4}
17
- * />
22
+ * <Textarea label="Description" rows={4} />
18
23
  * ```
19
24
  */
20
25
  declare const Textarea: import("react").NamedExoticComponent<Props & import("react").RefAttributes<HTMLTextAreaElement>>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fabio.caffarello/react-design-system",
3
3
  "private": false,
4
- "version": "1.23.9",
4
+ "version": "1.23.11",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",