@ahmetilhn/hanui 5.5.0 → 5.6.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/build/index.d.ts CHANGED
@@ -444,6 +444,28 @@ declare const ConfirmDialog_2: FC<Props_50>;
444
444
 
445
445
  export declare type ConfirmKind = 'destructive' | 'warning' | 'neutral';
446
446
 
447
+ export declare const ContextMenu: MemoExoticComponent<({ point, onClose, items, label, header, className, testId, }: ContextMenuProps) => JSX.Element>;
448
+
449
+ declare type ContextMenuProps = {
450
+ /**
451
+ * Açılış noktası — `contextmenu` olayının `clientX` / `clientY`si (görünüm alanı koordinatı).
452
+ * `null` iken menü kapalı.
453
+ */
454
+ point: {
455
+ x: number;
456
+ y: number;
457
+ } | null;
458
+ /** Escape, Tab, dışarı tıklama ya da seçilen eylemden sonra çağrılır; çağıran `point`i `null` yapar. */
459
+ onClose: () => void;
460
+ items: MenuItem[];
461
+ /** Menünün erişilebilir adı ("Seçim seçenekleri"). */
462
+ label: string;
463
+ /** Eylemlerin ÜSTÜNDE okunan bağlam (seçimin özeti, ölçümler) — `role="menu"`nün DIŞINDA. */
464
+ header?: ReactNode;
465
+ className?: string;
466
+ testId?: string;
467
+ };
468
+
447
469
  export declare const CopyField: typeof CopyField_2;
448
470
 
449
471
  /** Kopyalanabilir teknik değer — tek dokunuşla panoya. */
@@ -897,10 +919,19 @@ export declare type HanuiToken = keyof typeof LIGHT_THEME;
897
919
 
898
920
  /**
899
921
  * `Escape`i tüketecek AÇIK bir yüzey var mı — kipsel pencere, açılır panel, bildirim.
900
- * ⚠ Sayfa düzeyinde `Escape` dinleyen her kod (sohbetin "akışı durdur" kısayolu gibi) önce bunu
901
- * sorar. Sormayan bir dinleyici, kullanıcı yalnızca bir modalı kapatmak isterken arkadaki işi de
902
- * iptal ediyordu. Yüzey kapanırken yığından AYNI olayın içinde değil, bir sonraki render'da
903
- * çıkar; yani dinleyici o tuş vuruşunda hâlâ `true` görür — istenen de bu.
922
+ * ⚠ Sayfa düzeyinde `Escape` dinleyen her kod (sohbetin "akışı durdur" kısayolu gibi) İKİSİNİ BİRDEN
923
+ * sorar: `event.defaultPrevented || hasOpenSurface()`. Sormayan bir dinleyici, kullanıcı yalnızca bir
924
+ * yüzeyi kapatmak isterken arkadaki işi de iptal ediyordu.
925
+ * - `Popover`, `Tooltip` ve `Toast` tuşu belge düzeyindeki kendi dinleyicilerinde tüketir, işaretler
926
+ * (`preventDefault`) ve AYNI tuş vuruşunda yığından düşer: gerçek tarayıcıda React ayrık olayın
927
+ * güncellemesini dinleyiciler arasında boşaltır. Yüzeyin dinleyicisinden SONRA koşan kod (pencerede
928
+ * ya da belgede sonradan eklenmiş) burada `false` görür; ona kalan kanıt `defaultPrevented`.
929
+ * Ölçüldü (2026-10-27): yardım `Popover`ını kapatan `Escape` bir grafik seçimini de siliyordu.
930
+ * jsdom bunu göremez: `fireEvent` betikten gönderilir, dinleyiciler arasında mikro görev
931
+ * boşaltılmaz.
932
+ * - Yüzeyin dinleyicisinden ÖNCE koşan kod işareti göremez ama yığın henüz düşmemiştir: `true`.
933
+ * - `<dialog>` tabanlı kipsel yüzeyler (`Modal`, `Drawer`, `BottomSheet`, `CommandPalette`) tuş olayı
934
+ * bittikten sonra `cancel` ile kapanır: tuş boyunca burada `true`.
904
935
  */
905
936
  export declare const hasOpenSurface: () => boolean;
906
937
 
@@ -1288,6 +1319,13 @@ export declare type PositioningOptions = {
1288
1319
  isOpen: boolean;
1289
1320
  };
1290
1321
 
1322
+ declare type PositioningRect = {
1323
+ top: number;
1324
+ left: number;
1325
+ width: number;
1326
+ height: number;
1327
+ };
1328
+
1291
1329
  export declare type PositioningState = {
1292
1330
  /** Yüzeye uygulanacak stil — `position: fixed` + hesaplanmış koordinat. */
1293
1331
  style: {
@@ -2612,7 +2650,9 @@ export declare const useListboxNavigation: <T extends HTMLElement = HTMLElement>
2612
2650
  * temeli.
2613
2651
  */
2614
2652
  export declare const usePositioning: (anchorRef: {
2615
- current: HTMLElement | null;
2653
+ current: {
2654
+ getBoundingClientRect: () => PositioningRect;
2655
+ } | null;
2616
2656
  }, surfaceRef: {
2617
2657
  current: HTMLElement | null;
2618
2658
  }, { side, align, offset, padding, isOpen }: PositioningOptions) => PositioningState;