@stackloop/ui 4.2.0 → 4.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/README.md CHANGED
@@ -691,6 +691,7 @@ Call `setupRippleEffects()` only once per app (for example in `main.tsx`) to avo
691
691
  - **Description:** Headless-style dropdown menu primitive with custom trigger support, outside-click close behavior, and nested submenus.
692
692
  - **Placement behavior:**
693
693
  - Root menu opens **down or up** based on viewport space (or can be forced).
694
+ - Root menu opens **right or left** based on viewport space and will clamp inside the viewport to avoid horizontal overflow.
694
695
  - Nested submenus open **right or left** based on side space (or can be forced).
695
696
  - **Use case:**
696
697
  - Nested navigation or action menus where each menu item can itself open another submenu.
@@ -709,6 +710,10 @@ Call `setupRippleEffects()` only once per app (for example in `main.tsx`) to avo
709
710
  - **`onOpenChange`**: `(open: boolean) => void` — optional callback.
710
711
  - **`placement`**: `'auto' | 'top' | 'bottom'` — default: `'auto'`.
711
712
  - **`className`**: `string` — optional.
713
+ - **Content Props (`DropdownMenuContent`):**
714
+ - **`side`**: `'auto' | 'left' | 'right'` — default: `'auto'`. Controls root horizontal direction.
715
+ - **`align`**: `'start' | 'end'` — default: `'start'`. Used as fallback preference when `side="auto"`.
716
+ - **`sideOffset`**: `number` — default: `8`. Gap between trigger and content.
712
717
  - **Usage:**
713
718
 
714
719
  ```jsx
@@ -724,7 +729,7 @@ Call `setupRippleEffects()` only once per app (for example in `main.tsx`) to avo
724
729
 
725
730
  <DropdownMenu>
726
731
  <DropdownMenuTrigger>Open menu</DropdownMenuTrigger>
727
- <DropdownMenuContent>
732
+ <DropdownMenuContent side="auto">
728
733
  <DropdownMenuItem asChild>
729
734
  <a href="/dashboard">Dashboard</a>
730
735
  </DropdownMenuItem>
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { type HTMLMotionProps } from 'framer-motion';
3
3
  type RootVerticalPlacement = 'auto' | 'top' | 'bottom';
4
+ type RootHorizontalPlacement = 'auto' | 'left' | 'right';
4
5
  type SubmenuHorizontalPlacement = 'auto' | 'left' | 'right';
5
6
  export interface DropdownMenuProps {
6
7
  children: React.ReactNode;
@@ -19,6 +20,7 @@ export declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<Dropdo
19
20
  export interface DropdownMenuContentProps extends Omit<HTMLMotionProps<'div'>, 'children'> {
20
21
  children: React.ReactNode;
21
22
  align?: 'start' | 'end';
23
+ side?: RootHorizontalPlacement;
22
24
  sideOffset?: number;
23
25
  animate?: boolean;
24
26
  }