@radix-ng/primitives 1.0.0-beta.2 → 1.0.0-beta.4

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 (104) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +76 -6
  3. package/fesm2022/radix-ng-primitives-accordion.mjs +5 -3
  4. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +31 -24
  6. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  7. package/fesm2022/radix-ng-primitives-autocomplete.mjs +1744 -0
  8. package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -0
  9. package/fesm2022/radix-ng-primitives-calendar.mjs +5 -3
  10. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  11. package/fesm2022/radix-ng-primitives-combobox.mjs +1399 -606
  12. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
  13. package/fesm2022/radix-ng-primitives-config.mjs +13 -4
  14. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  15. package/fesm2022/radix-ng-primitives-context-menu.mjs +51 -10
  16. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  17. package/fesm2022/radix-ng-primitives-core.mjs +1345 -64
  18. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  19. package/fesm2022/radix-ng-primitives-date-field.mjs +5 -3
  20. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  21. package/fesm2022/radix-ng-primitives-dialog.mjs +271 -145
  22. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  23. package/fesm2022/radix-ng-primitives-direction-provider.mjs +70 -0
  24. package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -0
  25. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +519 -184
  26. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  27. package/fesm2022/radix-ng-primitives-drawer.mjs +154 -64
  28. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  29. package/fesm2022/radix-ng-primitives-field.mjs +3 -2
  30. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  31. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +517 -0
  32. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -0
  33. package/fesm2022/radix-ng-primitives-focus-scope.mjs +296 -70
  34. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  35. package/fesm2022/radix-ng-primitives-menu.mjs +894 -299
  36. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  37. package/fesm2022/radix-ng-primitives-menubar.mjs +32 -4
  38. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  39. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +176 -207
  40. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  41. package/fesm2022/radix-ng-primitives-popover.mjs +250 -250
  42. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  43. package/fesm2022/radix-ng-primitives-popper.mjs +94 -45
  44. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  45. package/fesm2022/radix-ng-primitives-portal.mjs +107 -17
  46. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  47. package/fesm2022/radix-ng-primitives-presence.mjs +262 -79
  48. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  49. package/fesm2022/radix-ng-primitives-preview-card.mjs +172 -218
  50. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  51. package/fesm2022/radix-ng-primitives-roving-focus.mjs +4 -2
  52. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  53. package/fesm2022/radix-ng-primitives-scroll-area.mjs +5 -4
  54. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  55. package/fesm2022/radix-ng-primitives-select.mjs +303 -234
  56. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  57. package/fesm2022/radix-ng-primitives-slider.mjs +5 -3
  58. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  59. package/fesm2022/radix-ng-primitives-stepper.mjs +5 -3
  60. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  61. package/fesm2022/radix-ng-primitives-time-field.mjs +5 -3
  62. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  63. package/fesm2022/radix-ng-primitives-toast.mjs +15 -36
  64. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
  65. package/fesm2022/radix-ng-primitives-toggle-group.mjs +5 -3
  66. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  67. package/fesm2022/radix-ng-primitives-toolbar.mjs +5 -3
  68. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  69. package/fesm2022/radix-ng-primitives-tooltip.mjs +105 -145
  70. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  71. package/package.json +14 -1
  72. package/types/radix-ng-primitives-accordion.d.ts +4 -3
  73. package/types/radix-ng-primitives-alert-dialog.d.ts +17 -11
  74. package/types/radix-ng-primitives-autocomplete.d.ts +661 -0
  75. package/types/radix-ng-primitives-calendar.d.ts +5 -3
  76. package/types/radix-ng-primitives-combobox.d.ts +727 -293
  77. package/types/radix-ng-primitives-config.d.ts +1 -1
  78. package/types/radix-ng-primitives-context-menu.d.ts +15 -5
  79. package/types/radix-ng-primitives-core.d.ts +762 -14
  80. package/types/radix-ng-primitives-date-field.d.ts +3 -2
  81. package/types/radix-ng-primitives-dialog.d.ts +107 -55
  82. package/types/radix-ng-primitives-direction-provider.d.ts +41 -0
  83. package/types/radix-ng-primitives-dismissable-layer.d.ts +147 -99
  84. package/types/radix-ng-primitives-drawer.d.ts +49 -22
  85. package/types/radix-ng-primitives-field.d.ts +1 -0
  86. package/types/radix-ng-primitives-floating-focus-manager.d.ts +175 -0
  87. package/types/radix-ng-primitives-focus-scope.d.ts +132 -1
  88. package/types/radix-ng-primitives-menu.d.ts +204 -112
  89. package/types/radix-ng-primitives-navigation-menu.d.ts +61 -101
  90. package/types/radix-ng-primitives-popover.d.ts +82 -115
  91. package/types/radix-ng-primitives-popper.d.ts +46 -10
  92. package/types/radix-ng-primitives-portal.d.ts +53 -8
  93. package/types/radix-ng-primitives-presence.d.ts +98 -17
  94. package/types/radix-ng-primitives-preview-card.d.ts +63 -95
  95. package/types/radix-ng-primitives-roving-focus.d.ts +7 -6
  96. package/types/radix-ng-primitives-scroll-area.d.ts +2 -2
  97. package/types/radix-ng-primitives-select.d.ts +192 -158
  98. package/types/radix-ng-primitives-slider.d.ts +5 -4
  99. package/types/radix-ng-primitives-stepper.d.ts +4 -3
  100. package/types/radix-ng-primitives-time-field.d.ts +3 -2
  101. package/types/radix-ng-primitives-toast.d.ts +7 -7
  102. package/types/radix-ng-primitives-toggle-group.d.ts +5 -4
  103. package/types/radix-ng-primitives-toolbar.d.ts +3 -2
  104. package/types/radix-ng-primitives-tooltip.d.ts +48 -84
@@ -1,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Signal } from '@angular/core';
3
- import * as i1 from '@radix-ng/primitives/core';
3
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
4
4
  import { RdxControlValueAccessor, NumberInput, BooleanInput } from '@radix-ng/primitives/core';
5
5
  export { clamp } from '@radix-ng/primitives/core';
6
6
  import * as _radix_ng_primitives_slider from '@radix-ng/primitives/slider';
@@ -144,7 +144,8 @@ declare class RdxSliderRoot {
144
144
  * The reading direction. Mirrors the horizontal axis when set to `'rtl'`.
145
145
  * @default 'ltr'
146
146
  */
147
- readonly dir: _angular_core.InputSignal<"ltr" | "rtl">;
147
+ readonly dirInput: _angular_core.InputSignal<"ltr" | "rtl" | undefined>;
148
+ readonly dir: Signal<_radix_ng_primitives_core.Direction>;
148
149
  /**
149
150
  * How thumbs behave when they meet in a range slider.
150
151
  * @default 'push'
@@ -232,7 +233,7 @@ declare class RdxSliderRoot {
232
233
  /** @ignore */
233
234
  resetPressedThumb(): void;
234
235
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxSliderRoot, never>;
235
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSliderRoot, "div[rdxSliderRoot]", ["rdxSliderRoot"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "largeStep": { "alias": "largeStep"; "required": false; "isSignal": true; }; "minStepsBetweenValues": { "alias": "minStepsBetweenValues"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "thumbCollisionBehavior": { "alias": "thumbCollisionBehavior"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; "onValueCommitted": "onValueCommitted"; }, never, never, true, [{ directive: typeof i1.RdxControlValueAccessor; inputs: { "value": "value"; "disabled": "disabled"; }; outputs: {}; }]>;
236
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxSliderRoot, "div[rdxSliderRoot]", ["rdxSliderRoot"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "largeStep": { "alias": "largeStep"; "required": false; "isSignal": true; }; "minStepsBetweenValues": { "alias": "minStepsBetweenValues"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "thumbCollisionBehavior": { "alias": "thumbCollisionBehavior"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; "onValueCommitted": "onValueCommitted"; }, never, never, true, [{ directive: typeof _radix_ng_primitives_core.RdxControlValueAccessor; inputs: { "value": "value"; "disabled": "disabled"; }; outputs: {}; }]>;
236
237
  }
237
238
 
238
239
  /**
@@ -364,7 +365,7 @@ declare class RdxSliderValue {
364
365
  *
365
366
  * @see https://base-ui.com/react/components/slider
366
367
  */
367
- declare const injectSliderRootContext: i1.InjectContext<RdxSliderRoot>;
368
+ declare const injectSliderRootContext: _radix_ng_primitives_core.InjectContext<RdxSliderRoot>;
368
369
  declare const provideSliderRootContext: (useFactory: () => RdxSliderRoot) => _angular_core.Provider;
369
370
 
370
371
  declare class RdxSliderModule {
@@ -63,7 +63,7 @@ declare class RdxStepperIndicatorDirective {
63
63
  interface StepperRootContext {
64
64
  value: ModelSignal<number | undefined>;
65
65
  orientation: InputSignal<'vertical' | 'horizontal'>;
66
- dir: InputSignal<Direction>;
66
+ dir: Signal<Direction>;
67
67
  linear: InputSignalWithTransform<boolean, BooleanInput>;
68
68
  totalStepperItems: WritableSignal<HTMLElement[]>;
69
69
  }
@@ -75,7 +75,8 @@ declare class RdxStepperRootDirective implements StepperRootContext {
75
75
  readonly defaultValue: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
76
76
  readonly value: _angular_core.ModelSignal<number | undefined>;
77
77
  readonly linear: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
78
- readonly dir: _angular_core.InputSignal<Direction>;
78
+ readonly dirInput: _angular_core.InputSignal<Direction | undefined>;
79
+ readonly dir: _angular_core.Signal<Direction>;
79
80
  readonly orientation: _angular_core.InputSignal<"vertical" | "horizontal">;
80
81
  /** @ignore */
81
82
  readonly totalStepperItemsArray: _angular_core.Signal<HTMLElement[]>;
@@ -97,7 +98,7 @@ declare class RdxStepperRootDirective implements StepperRootContext {
97
98
  constructor();
98
99
  goToStep(step: number): void;
99
100
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxStepperRootDirective, never>;
100
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxStepperRootDirective, "[rdxStepperRoot]", ["rdxStepperRoot"], { "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; }, never, never, true, never>;
101
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxStepperRootDirective, "[rdxStepperRoot]", ["rdxStepperRoot"], { "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; }, never, never, true, never>;
101
102
  }
102
103
 
103
104
  declare class RdxStepperTriggerDirective {
@@ -22,7 +22,8 @@ declare class RdxTimeFieldRootDirective {
22
22
  * The locale to use for formatting dates.
23
23
  */
24
24
  readonly locale: _angular_core.InputSignal<string>;
25
- readonly dir: _angular_core.InputSignal<Direction>;
25
+ readonly dirInput: _angular_core.InputSignal<Direction | undefined>;
26
+ readonly dir: Signal<Direction>;
26
27
  /**
27
28
  * The minimum valid date that can be entered.
28
29
  */
@@ -138,7 +139,7 @@ declare class RdxTimeFieldRootDirective {
138
139
  */
139
140
  setFocusedElement(el: HTMLElement): void;
140
141
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxTimeFieldRootDirective, never>;
141
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxTimeFieldRootDirective, "[rdxTimeFieldRoot]", ["rdxTimeFieldRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "hourCycle": { "alias": "hourCycle"; "required": false; "isSignal": true; }; "granularity": { "alias": "granularity"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "hideTimeZone": { "alias": "hideTimeZone"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "placeholder": "placeholderChange"; }, ["segmentInputs"], never, true, never>;
142
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxTimeFieldRootDirective, "[rdxTimeFieldRoot]", ["rdxTimeFieldRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "hourCycle": { "alias": "hourCycle"; "required": false; "isSignal": true; }; "granularity": { "alias": "granularity"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "hideTimeZone": { "alias": "hideTimeZone"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "placeholder": "placeholderChange"; }, ["segmentInputs"], never, true, never>;
142
143
  }
143
144
 
144
145
  declare class RdxTimeFieldInputDirective {
@@ -207,16 +207,16 @@ declare class RdxToastViewport {
207
207
 
208
208
  /**
209
209
  * Positions an anchored toast against an element — the Angular counterpart of `<Toast.Positioner>`.
210
- * Composes the popper machinery so a toast can point at a trigger instead of living in the stack.
211
210
  *
212
- * Bind `anchor` (and optionally `side`/`align`/offsets) typically from a toast's `positionerProps`.
213
- * It hosts its own `RdxPopper` so it is self-contained (no surrounding `rdxPopperRoot` needed), and
214
- * mirrors the popper measurements as friendlier CSS variables plus `data-side` / `data-align`.
211
+ * A "thin" positioner (ADR 0012): it inherits the popper positioning surface (inputs, `placed`
212
+ * output, unified vars + placement attrs) from {@link RdxPopperContentWrapper}. Bind `anchor` (and
213
+ * optionally `side`/`align`/offsets) typically from a toast's `positionerProps`. It also composes
214
+ * its own {@link RdxPopper} so it is self-contained (no surrounding `rdxPopperRoot` needed), and
215
+ * mirrors the anchor width / transform origin as friendlier `--toast-*` CSS variables.
215
216
  */
216
- declare class RdxToastPositioner {
217
- protected readonly wrapper: RdxPopperContentWrapper;
217
+ declare class RdxToastPositioner extends RdxPopperContentWrapper {
218
218
  static ɵfac: i0.ɵɵFactoryDeclaration<RdxToastPositioner, never>;
219
- static ɵdir: i0.ɵɵDirectiveDeclaration<RdxToastPositioner, "[rdxToastPositioner]", ["rdxToastPositioner"], {}, {}, never, never, true, [{ directive: typeof i1$1.RdxPopper; inputs: {}; outputs: {}; }, { directive: typeof i1$1.RdxPopperContentWrapper; inputs: { "anchor": "anchor"; "side": "side"; "sideOffset": "sideOffset"; "align": "align"; "alignOffset": "alignOffset"; "arrowPadding": "arrowPadding"; "avoidCollisions": "avoidCollisions"; "collisionBoundary": "collisionBoundary"; "collisionPadding": "collisionPadding"; "sticky": "sticky"; "hideWhenDetached": "hideWhenDetached"; "positionStrategy": "positionStrategy"; "updatePositionStrategy": "updatePositionStrategy"; }; outputs: {}; }]>;
219
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RdxToastPositioner, "[rdxToastPositioner]", ["rdxToastPositioner"], {}, {}, never, never, true, [{ directive: typeof i1$1.RdxPopper; inputs: {}; outputs: {}; }]>;
220
220
  }
221
221
 
222
222
  /** Direction a swipe travels to dismiss a toast. */
@@ -1,7 +1,7 @@
1
- import * as _angular_core from '@angular/core';
2
- import { Signal } from '@angular/core';
3
1
  import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
4
2
  import { DataOrientation, BooleanInput } from '@radix-ng/primitives/core';
3
+ import * as _angular_core from '@angular/core';
4
+ import { Signal } from '@angular/core';
5
5
  import * as i1 from '@radix-ng/primitives/roving-focus';
6
6
  import { Direction } from '@radix-ng/primitives/roving-focus';
7
7
  import { ControlValueAccessor } from '@angular/forms';
@@ -89,7 +89,8 @@ declare abstract class RdxToggleGroupBase implements ControlValueAccessor {
89
89
  */
90
90
  declare class RdxToggleGroup extends RdxToggleGroupBase {
91
91
  /** Text direction for arrow-key navigation. */
92
- readonly dir: _angular_core.InputSignal<Direction>;
92
+ readonly dirInput: _angular_core.InputSignal<Direction | undefined>;
93
+ readonly dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
93
94
  /**
94
95
  * Whether keyboard navigation should loop from the last item back to the first.
95
96
  *
@@ -99,7 +100,7 @@ declare class RdxToggleGroup extends RdxToggleGroupBase {
99
100
  private readonly rovingFocusGroup;
100
101
  constructor();
101
102
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxToggleGroup, never>;
102
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxToggleGroup, "[rdxToggleGroup]", ["rdxToggleGroup"], { "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "loopFocus": { "alias": "loopFocus"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxRovingFocusGroupDirective; inputs: {}; outputs: {}; }]>;
103
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxToggleGroup, "[rdxToggleGroup]", ["rdxToggleGroup"], { "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "loopFocus": { "alias": "loopFocus"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxRovingFocusGroupDirective; inputs: {}; outputs: {}; }]>;
103
104
  }
104
105
 
105
106
  /**
@@ -31,7 +31,8 @@ declare class RdxToolbarRoot {
31
31
  */
32
32
  readonly orientation: _angular_core.InputSignal<DataOrientation>;
33
33
  /** Text direction for arrow-key navigation. */
34
- readonly dir: _angular_core.InputSignal<Direction>;
34
+ readonly dirInput: _angular_core.InputSignal<Direction | undefined>;
35
+ readonly dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
35
36
  /**
36
37
  * Whether keyboard navigation should loop from the last item back to the first.
37
38
  *
@@ -47,7 +48,7 @@ declare class RdxToolbarRoot {
47
48
  private readonly rovingFocusGroup;
48
49
  constructor();
49
50
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxToolbarRoot, never>;
50
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxToolbarRoot, "[rdxToolbarRoot]", ["rdxToolbarRoot"], { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "loopFocus": { "alias": "loopFocus"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$1.RdxRovingFocusGroupDirective; inputs: {}; outputs: {}; }]>;
51
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxToolbarRoot, "[rdxToolbarRoot]", ["rdxToolbarRoot"], { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "loopFocus": { "alias": "loopFocus"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$1.RdxRovingFocusGroupDirective; inputs: {}; outputs: {}; }]>;
51
52
  }
52
53
 
53
54
  /**
@@ -1,18 +1,34 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken, Provider, Signal, ElementRef } from '@angular/core';
3
- import * as i1 from '@radix-ng/primitives/presence';
3
+ import * as i1 from '@radix-ng/primitives/portal';
4
4
  import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
5
- import { BooleanInput, NumberInput } from '@radix-ng/primitives/core';
5
+ import { RdxFloatingRootContext, BooleanInput, NumberInput } from '@radix-ng/primitives/core';
6
6
  import * as i1$1 from '@radix-ng/primitives/popper';
7
- import { RdxPopperContentWrapper, RdxPopperAnchorElement } from '@radix-ng/primitives/popper';
7
+ import { RdxPopperContentWrapper } from '@radix-ng/primitives/popper';
8
8
  import * as _radix_ng_primitives_tooltip from '@radix-ng/primitives/tooltip';
9
- import * as i1$2 from '@radix-ng/primitives/portal';
10
- import { RdxPortalContainer } from '@radix-ng/primitives/portal';
11
- import * as i1$3 from '@radix-ng/primitives/dismissable-layer';
9
+ import { RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';
12
10
 
13
- declare class RdxTooltipPortalPresence {
14
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxTooltipPortalPresence, never>;
15
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxTooltipPortalPresence, "ng-template[rdxTooltipPortalPresence]", never, {}, {}, never, never, true, [{ directive: typeof i1.RdxPresenceDirective; inputs: {}; outputs: {}; }]>;
11
+ /**
12
+ * Structural directive that teleports the tooltip content into a container (default `document.body`)
13
+ * while the tooltip is open, and keeps it mounted until any CSS exit `@keyframes` finishes.
14
+ *
15
+ * Apply it with the `*` microsyntax on the positioner — `<div *rdxTooltipPortal rdxTooltipPositioner>`
16
+ * — or as an explicit `<ng-template rdxTooltipPortal>`. For a custom container use the explicit form
17
+ * with `[container]`.
18
+ */
19
+ declare class RdxTooltipPortal {
20
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxTooltipPortal, never>;
21
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxTooltipPortal, "ng-template[rdxTooltipPortal]", ["rdxTooltipPortal"], {}, {}, never, never, true, [{ directive: typeof i1.RdxPortalPresence; inputs: { "container": "container"; }; outputs: {}; }]>;
22
+ }
23
+ /**
24
+ * Dev-mode guard: `rdxTooltipPortal` used to be an attribute directive on a `<div>`. It is now
25
+ * structural, so the old `<div rdxTooltipPortal>` markup would silently stop portaling — fail loudly
26
+ * instead.
27
+ */
28
+ declare class RdxTooltipPortalMisuseGuard {
29
+ constructor();
30
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxTooltipPortalMisuseGuard, never>;
31
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxTooltipPortalMisuseGuard, "[rdxTooltipPortal]:not(ng-template)", never, {}, {}, never, never, true, never>;
16
32
  }
17
33
 
18
34
  declare class RdxTooltipHandle<Payload = unknown> {
@@ -93,6 +109,12 @@ declare class RdxTooltip {
93
109
  private readonly popper;
94
110
  private readonly destroyRef;
95
111
  private hasAppliedDefaultOpen;
112
+ /**
113
+ * Per-popup floating root context (ADR 0015) — the shared store the positioner's dismissal
114
+ * capability reads (`open`, `triggers`, the reference/floating elements). The tree node is
115
+ * registered by the positioner; this context exists independently so dismissal can read `open()`.
116
+ */
117
+ readonly floatingContext: RdxFloatingRootContext;
96
118
  /**
97
119
  * Whether the tooltip is currently open.
98
120
  */
@@ -198,95 +220,37 @@ declare class RdxTooltipPopup {
198
220
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxTooltipPopup, "[rdxTooltipPopup]", never, {}, {}, never, never, true, [{ directive: typeof i1$1.RdxPopperContent; inputs: {}; outputs: {}; }]>;
199
221
  }
200
222
 
201
- /**
202
- * Moves the tooltip to a different part of the DOM.
203
- */
204
- declare class RdxTooltipPortal {
205
- readonly container: _angular_core.InputSignal<RdxPortalContainer>;
206
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxTooltipPortal, never>;
207
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxTooltipPortal, "[rdxTooltipPortal]", never, { "container": { "alias": "container"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$2.RdxPortal; inputs: { "container": "container"; }; outputs: {}; }]>;
208
- }
209
-
210
223
  /**
211
224
  * Positions the tooltip popup against its trigger (or a custom anchor).
225
+ *
226
+ * A "thin" positioner (ADR 0012): it inherits the popper positioning surface (inputs, `placed`
227
+ * output, unified vars + placement attrs) from {@link RdxPopperContentWrapper} and adds tooltip's own
228
+ * concerns — Base UI-aligned defaults (`side: 'top'`) via the config provider, dismiss handling
229
+ * (ADR 0015 — inline {@link RdxDismiss} on the shared floating tree, dismissal-only with
230
+ * no focus manager), the cursor-follow pointer-through behavior (via the inherited `nonInteractive`
231
+ * signal), the open/closed state attributes, and the hover grace area.
212
232
  */
213
- declare class RdxTooltipPositioner {
233
+ declare class RdxTooltipPositioner extends RdxPopperContentWrapper {
214
234
  protected readonly rootContext: _radix_ng_primitives_tooltip.RdxTooltipContext;
215
- protected readonly wrapper: RdxPopperContentWrapper;
216
235
  private readonly destroyRef;
217
- private readonly dismissableLayer;
218
- private readonly elementRef;
219
- /**
220
- * An element to position the popup against. Defaults to the trigger.
221
- */
222
- readonly anchor: _angular_core.InputSignal<RdxPopperAnchorElement>;
223
- /**
224
- * The preferred side of the anchor to render against when open.
225
- */
226
- readonly side: _angular_core.InputSignal<"top" | "right" | "bottom" | "left">;
227
- /**
228
- * The distance in pixels from the anchor.
229
- */
230
- readonly sideOffset: _angular_core.InputSignalWithTransform<number, NumberInput>;
231
- /**
232
- * The preferred alignment against the anchor.
233
- */
234
- readonly align: _angular_core.InputSignal<"start" | "center" | "end">;
235
- /**
236
- * An offset in pixels from the `start` or `end` alignment options.
237
- */
238
- readonly alignOffset: _angular_core.InputSignalWithTransform<number, NumberInput>;
239
- /**
240
- * The padding between the arrow and the edges of the content.
241
- */
242
- readonly arrowPadding: _angular_core.InputSignalWithTransform<number, NumberInput>;
243
- /**
244
- * When `true`, overrides the `side` and `align` preferences to prevent collisions with boundary edges.
245
- */
246
- readonly avoidCollisions: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
247
- /**
248
- * The element used as the collision boundary.
249
- */
250
- readonly collisionBoundary: _angular_core.InputSignal<ElementRef<HTMLElement> | ElementRef<HTMLElement>[] | undefined>;
251
- /**
252
- * The distance in pixels from the boundary edges where collision detection should occur.
253
- */
254
- readonly collisionPadding: _angular_core.InputSignal<number | Partial<Record<"top" | "right" | "bottom" | "left", number>>>;
255
- /**
256
- * The sticky behavior on the `align` axis.
257
- */
258
- readonly sticky: _angular_core.InputSignal<"partial" | "always">;
259
- /**
260
- * Whether to hide the content when the trigger becomes fully occluded.
261
- */
262
- readonly hideWhenDetached: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
263
- /**
264
- * The CSS position strategy used by Floating UI.
265
- */
266
- readonly positionStrategy: _angular_core.InputSignal<"fixed" | "absolute">;
267
- /**
268
- * Whether to update the position of the floating element on every animation frame if required.
269
- */
270
- readonly updatePositionStrategy: _angular_core.InputSignal<"always" | "optimized">;
271
- /**
272
- * Emits when the element is placed.
273
- */
274
- readonly placed: _angular_core.OutputRef<void>;
236
+ private readonly floatingContext;
237
+ private readonly registration;
238
+ private readonly containerRef;
275
239
  /**
276
240
  * Event handler called when the escape key is down. Can be prevented.
277
241
  */
278
- readonly escapeKeyDown: _angular_core.OutputRef<KeyboardEvent>;
242
+ readonly escapeKeyDown: _angular_core.OutputEmitterRef<KeyboardEvent>;
279
243
  /**
280
- * Event handler called when a `pointerdown` event happens outside of the `DismissableLayer`. Can be prevented.
244
+ * Event handler called when a `pointerdown` event happens outside of the popup. Can be prevented.
281
245
  */
282
- readonly pointerDownOutside: _angular_core.OutputRef<PointerEvent>;
246
+ readonly pointerDownOutside: _angular_core.OutputEmitterRef<RdxOutsidePressDomEvent>;
283
247
  private readonly triggerEl;
284
248
  private readonly containerEl;
285
249
  private readonly graceArea;
286
250
  private readonly afterNextRender;
287
251
  constructor();
288
252
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxTooltipPositioner, never>;
289
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxTooltipPositioner, "[rdxTooltipPositioner]", never, { "anchor": { "alias": "anchor"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "sideOffset"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "alignOffset": { "alias": "alignOffset"; "required": false; "isSignal": true; }; "arrowPadding": { "alias": "arrowPadding"; "required": false; "isSignal": true; }; "avoidCollisions": { "alias": "avoidCollisions"; "required": false; "isSignal": true; }; "collisionBoundary": { "alias": "collisionBoundary"; "required": false; "isSignal": true; }; "collisionPadding": { "alias": "collisionPadding"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "hideWhenDetached": { "alias": "hideWhenDetached"; "required": false; "isSignal": true; }; "positionStrategy": { "alias": "positionStrategy"; "required": false; "isSignal": true; }; "updatePositionStrategy": { "alias": "updatePositionStrategy"; "required": false; "isSignal": true; }; }, { "placed": "placed"; "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; }, never, never, true, [{ directive: typeof i1$3.RdxDismissableLayer; inputs: {}; outputs: {}; }, { directive: typeof i1$1.RdxPopperContentWrapper; inputs: { "anchor": "anchor"; "side": "side"; "sideOffset": "sideOffset"; "align": "align"; "alignOffset": "alignOffset"; "arrowPadding": "arrowPadding"; "avoidCollisions": "avoidCollisions"; "collisionBoundary": "collisionBoundary"; "collisionPadding": "collisionPadding"; "sticky": "sticky"; "hideWhenDetached": "hideWhenDetached"; "positionStrategy": "positionStrategy"; "updatePositionStrategy": "updatePositionStrategy"; }; outputs: {}; }]>;
253
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxTooltipPositioner, "[rdxTooltipPositioner]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; }, never, never, true, [{ directive: typeof _radix_ng_primitives_core.RdxFloatingNodeRegistration; inputs: {}; outputs: {}; }]>;
290
254
  }
291
255
 
292
256
  type TooltipInstantController = {
@@ -390,7 +354,7 @@ declare class RdxTooltipTrigger {
390
354
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxTooltipTrigger, "[rdxTooltipTrigger]", never, { "handle": { "alias": "handle"; "required": false; "isSignal": true; }; "payload": { "alias": "payload"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; "userOnPointerDown": { "alias": "rdxOnPointerDown"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$1.RdxPopperAnchor; inputs: {}; outputs: {}; }]>;
391
355
  }
392
356
 
393
- declare const tooltipImports: (typeof RdxTooltipPortalPresence)[];
357
+ declare const tooltipImports: (typeof RdxTooltipPortal)[];
394
358
 
395
- export { RdxTooltip, RdxTooltipArrow, RdxTooltipDefaultsToken, RdxTooltipHandle, RdxTooltipPopup, RdxTooltipPortal, RdxTooltipPortalPresence, RdxTooltipPositioner, RdxTooltipProvider, RdxTooltipTrigger, createRdxTooltipHandle, defaultTooltipConfig, injectRdxTooltipConfig, injectRdxTooltipContext, injectRdxTooltipProviderContext, provideRdxTooltipConfig, provideRdxTooltipContext, provideRdxTooltipProviderContext, tooltipImports };
359
+ export { RdxTooltip, RdxTooltipArrow, RdxTooltipDefaultsToken, RdxTooltipHandle, RdxTooltipPopup, RdxTooltipPortal, RdxTooltipPortalMisuseGuard, RdxTooltipPositioner, RdxTooltipProvider, RdxTooltipTrigger, createRdxTooltipHandle, defaultTooltipConfig, injectRdxTooltipConfig, injectRdxTooltipContext, injectRdxTooltipProviderContext, provideRdxTooltipConfig, provideRdxTooltipContext, provideRdxTooltipProviderContext, tooltipImports };
396
360
  export type { RdxTooltipConfig, RdxTooltipContext, RdxTooltipProviderContext, RdxTrackCursorAxis };