@radix-ng/primitives 0.50.0 → 1.0.0-beta.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 (207) hide show
  1. package/collection/README.md +1 -0
  2. package/fesm2022/radix-ng-primitives-accordion.mjs +134 -66
  3. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +224 -132
  5. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  6. package/fesm2022/radix-ng-primitives-arrow.mjs +26 -10
  7. package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +6 -6
  9. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-avatar.mjs +68 -75
  11. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-button.mjs +123 -0
  13. package/fesm2022/radix-ng-primitives-button.mjs.map +1 -0
  14. package/fesm2022/radix-ng-primitives-calendar.mjs +104 -103
  15. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-checkbox.mjs +414 -80
  17. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-collapsible.mjs +193 -92
  19. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-collection.mjs +72 -0
  21. package/fesm2022/radix-ng-primitives-collection.mjs.map +1 -0
  22. package/fesm2022/radix-ng-primitives-config.mjs +5 -5
  23. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-context-menu.mjs +143 -427
  25. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-core.mjs +757 -757
  27. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-cropper.mjs +55 -53
  29. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-date-field.mjs +93 -86
  31. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-dialog.mjs +658 -330
  33. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +98 -76
  35. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-drawer.mjs +1059 -0
  37. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -0
  38. package/fesm2022/radix-ng-primitives-editable.mjs +20 -20
  39. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-field.mjs +363 -0
  41. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -0
  42. package/fesm2022/radix-ng-primitives-fieldset.mjs +79 -0
  43. package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -0
  44. package/fesm2022/radix-ng-primitives-focus-guards.mjs +3 -3
  45. package/fesm2022/radix-ng-primitives-focus-guards.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-focus-scope.mjs +29 -14
  47. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-input.mjs +172 -0
  49. package/fesm2022/radix-ng-primitives-input.mjs.map +1 -0
  50. package/fesm2022/radix-ng-primitives-label.mjs +11 -11
  51. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-menu.mjs +1484 -353
  53. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-menubar.mjs +290 -162
  55. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-meter.mjs +271 -0
  57. package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -0
  58. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1060 -1553
  59. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-number-field.mjs +1102 -366
  61. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-pagination.mjs +51 -51
  63. package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-popover.mjs +980 -995
  65. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  66. package/fesm2022/radix-ng-primitives-popper.mjs +137 -82
  67. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  68. package/fesm2022/radix-ng-primitives-portal.mjs +40 -16
  69. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  70. package/fesm2022/radix-ng-primitives-presence.mjs +134 -246
  71. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  72. package/fesm2022/radix-ng-primitives-preview-card.mjs +997 -0
  73. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -0
  74. package/fesm2022/radix-ng-primitives-progress.mjs +231 -92
  75. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  76. package/fesm2022/radix-ng-primitives-radio.mjs +211 -70
  77. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  78. package/fesm2022/radix-ng-primitives-roving-focus.mjs +127 -77
  79. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  80. package/fesm2022/radix-ng-primitives-select.mjs +791 -511
  81. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  82. package/fesm2022/radix-ng-primitives-separator.mjs +16 -45
  83. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  84. package/fesm2022/radix-ng-primitives-slider.mjs +976 -720
  85. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  86. package/fesm2022/radix-ng-primitives-stepper.mjs +69 -71
  87. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  88. package/fesm2022/radix-ng-primitives-switch.mjs +128 -124
  89. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  90. package/fesm2022/radix-ng-primitives-tabs.mjs +388 -115
  91. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  92. package/fesm2022/radix-ng-primitives-time-field.mjs +111 -117
  93. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  94. package/fesm2022/radix-ng-primitives-toggle-group.mjs +122 -248
  95. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  96. package/fesm2022/radix-ng-primitives-toggle.mjs +99 -62
  97. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  98. package/fesm2022/radix-ng-primitives-toolbar.mjs +307 -94
  99. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  100. package/fesm2022/radix-ng-primitives-tooltip.mjs +690 -1079
  101. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  102. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +46 -87
  103. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  104. package/fesm2022/radix-ng-primitives.mjs.map +1 -1
  105. package/meter/README.md +3 -0
  106. package/navigation-menu/README.md +2 -1
  107. package/package.json +85 -63
  108. package/portal/README.md +2 -0
  109. package/preview-card/README.md +3 -0
  110. package/schematics/collection.json +1 -0
  111. package/schematics/ng-add/index.d.ts +3 -2
  112. package/schematics/ng-add/index.js +62 -31
  113. package/schematics/ng-add/index.js.map +1 -1
  114. package/schematics/ng-add/package-config.d.ts +4 -2
  115. package/schematics/ng-add/package-config.js +10 -2
  116. package/schematics/ng-add/package-config.js.map +1 -1
  117. package/schematics/ng-add/schema.d.ts +3 -0
  118. package/schematics/ng-add/schema.js +3 -0
  119. package/schematics/ng-add/schema.js.map +1 -0
  120. package/schematics/ng-add/schema.json +14 -0
  121. package/select/README.md +2 -0
  122. package/{accordion/index.d.ts → types/radix-ng-primitives-accordion.d.ts} +102 -67
  123. package/types/radix-ng-primitives-alert-dialog.d.ts +114 -0
  124. package/{arrow/index.d.ts → types/radix-ng-primitives-arrow.d.ts} +1 -1
  125. package/{aspect-ratio/index.d.ts → types/radix-ng-primitives-aspect-ratio.d.ts} +1 -1
  126. package/{avatar/index.d.ts → types/radix-ng-primitives-avatar.d.ts} +7 -11
  127. package/types/radix-ng-primitives-button.d.ts +73 -0
  128. package/{calendar/index.d.ts → types/radix-ng-primitives-calendar.d.ts} +2 -3
  129. package/types/radix-ng-primitives-checkbox.d.ts +337 -0
  130. package/types/radix-ng-primitives-collapsible.d.ts +159 -0
  131. package/types/radix-ng-primitives-collection.d.ts +44 -0
  132. package/{config/index.d.ts → types/radix-ng-primitives-config.d.ts} +1 -1
  133. package/types/radix-ng-primitives-context-menu.d.ts +73 -0
  134. package/{core/index.d.ts → types/radix-ng-primitives-core.d.ts} +311 -236
  135. package/{cropper/index.d.ts → types/radix-ng-primitives-cropper.d.ts} +6 -5
  136. package/{date-field/index.d.ts → types/radix-ng-primitives-date-field.d.ts} +42 -27
  137. package/types/radix-ng-primitives-dialog.d.ts +323 -0
  138. package/{dismissable-layer/index.d.ts → types/radix-ng-primitives-dismissable-layer.d.ts} +15 -7
  139. package/types/radix-ng-primitives-drawer.d.ts +448 -0
  140. package/{editable/index.d.ts → types/radix-ng-primitives-editable.d.ts} +1 -1
  141. package/types/radix-ng-primitives-field.d.ts +373 -0
  142. package/types/radix-ng-primitives-fieldset.d.ts +48 -0
  143. package/{focus-scope/index.d.ts → types/radix-ng-primitives-focus-scope.d.ts} +13 -5
  144. package/types/radix-ng-primitives-input.d.ts +87 -0
  145. package/{label/index.d.ts → types/radix-ng-primitives-label.d.ts} +0 -1
  146. package/types/radix-ng-primitives-menu.d.ts +612 -0
  147. package/types/radix-ng-primitives-menubar.d.ts +66 -0
  148. package/types/radix-ng-primitives-meter.d.ts +193 -0
  149. package/types/radix-ng-primitives-navigation-menu.d.ts +488 -0
  150. package/types/radix-ng-primitives-number-field.d.ts +464 -0
  151. package/{pagination/index.d.ts → types/radix-ng-primitives-pagination.d.ts} +2 -2
  152. package/types/radix-ng-primitives-popover.d.ts +416 -0
  153. package/{popper/index.d.ts → types/radix-ng-primitives-popper.d.ts} +50 -9
  154. package/types/radix-ng-primitives-portal.d.ts +30 -0
  155. package/types/radix-ng-primitives-presence.d.ts +55 -0
  156. package/types/radix-ng-primitives-preview-card.d.ts +359 -0
  157. package/types/radix-ng-primitives-progress.d.ts +206 -0
  158. package/{radio/index.d.ts → types/radix-ng-primitives-radio.d.ts} +56 -26
  159. package/{roving-focus/index.d.ts → types/radix-ng-primitives-roving-focus.d.ts} +38 -27
  160. package/types/radix-ng-primitives-select.d.ts +512 -0
  161. package/types/radix-ng-primitives-separator.d.ts +38 -0
  162. package/types/radix-ng-primitives-slider.d.ts +377 -0
  163. package/{stepper/index.d.ts → types/radix-ng-primitives-stepper.d.ts} +21 -22
  164. package/types/radix-ng-primitives-switch.d.ts +121 -0
  165. package/types/radix-ng-primitives-tabs.d.ts +247 -0
  166. package/{time-field/index.d.ts → types/radix-ng-primitives-time-field.d.ts} +46 -31
  167. package/types/radix-ng-primitives-toggle-group.d.ts +116 -0
  168. package/types/radix-ng-primitives-toggle.d.ts +65 -0
  169. package/types/radix-ng-primitives-toolbar.d.ts +180 -0
  170. package/types/radix-ng-primitives-tooltip.d.ts +395 -0
  171. package/{visually-hidden/index.d.ts → types/radix-ng-primitives-visually-hidden.d.ts} +19 -19
  172. package/alert-dialog/index.d.ts +0 -57
  173. package/checkbox/index.d.ts +0 -164
  174. package/collapsible/index.d.ts +0 -85
  175. package/context-menu/index.d.ts +0 -129
  176. package/dialog/index.d.ts +0 -205
  177. package/dropdown-menu/README.md +0 -1
  178. package/dropdown-menu/index.d.ts +0 -171
  179. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +0 -583
  180. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +0 -1
  181. package/fesm2022/radix-ng-primitives-hover-card.mjs +0 -1246
  182. package/fesm2022/radix-ng-primitives-hover-card.mjs.map +0 -1
  183. package/fesm2022/radix-ng-primitives-tooltip2.mjs +0 -740
  184. package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +0 -1
  185. package/hover-card/README.md +0 -3
  186. package/hover-card/index.d.ts +0 -472
  187. package/menu/index.d.ts +0 -139
  188. package/menubar/index.d.ts +0 -56
  189. package/navigation-menu/index.d.ts +0 -405
  190. package/number-field/index.d.ts +0 -203
  191. package/popover/index.d.ts +0 -403
  192. package/portal/index.d.ts +0 -22
  193. package/presence/index.d.ts +0 -103
  194. package/progress/index.d.ts +0 -79
  195. package/select/index.d.ts +0 -214
  196. package/separator/index.d.ts +0 -63
  197. package/slider/index.d.ts +0 -263
  198. package/switch/index.d.ts +0 -105
  199. package/tabs/index.d.ts +0 -112
  200. package/toggle/index.d.ts +0 -75
  201. package/toggle-group/index.d.ts +0 -194
  202. package/toolbar/index.d.ts +0 -55
  203. package/tooltip/index.d.ts +0 -433
  204. package/tooltip2/README.md +0 -3
  205. package/tooltip2/index.d.ts +0 -325
  206. /package/{focus-guards/index.d.ts → types/radix-ng-primitives-focus-guards.d.ts} +0 -0
  207. /package/{index.d.ts → types/radix-ng-primitives.d.ts} +0 -0
@@ -0,0 +1,464 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Signal } from '@angular/core';
3
+ import * as i1 from '@radix-ng/primitives/core';
4
+ import { RdxFormValueControl, RdxControlValueAccessor, NumberInput, BooleanInput } from '@radix-ng/primitives/core';
5
+ import * as _radix_ng_primitives_number_field from '@radix-ng/primitives/number-field';
6
+ import { NumberFormatter, NumberParser } from '@internationalized/number';
7
+ import * as i1$1 from '@radix-ng/primitives/portal';
8
+
9
+ /**
10
+ * The software keyboard hint shown on touch devices, mapped to the input's `inputmode` attribute.
11
+ */
12
+ type InputMode = 'numeric' | 'decimal' | 'text';
13
+ /**
14
+ * Direction of a step-based value change (`1` to increase, `-1` to decrease).
15
+ */
16
+ type Direction = 1 | -1;
17
+ /**
18
+ * Why a value change happened. Mirrors Base UI's change reasons and is used
19
+ * internally to decide whether a change should be clamped (step interactions
20
+ * always clamp; direct text entry may go out of range when `allowOutOfRange`).
21
+ *
22
+ * @see https://base-ui.com/react/components/number-field
23
+ */
24
+ type NumberFieldChangeReason = 'input-change' | 'input-clear' | 'input-blur' | 'input-paste' | 'keyboard' | 'increment-press' | 'decrement-press' | 'wheel' | 'scrub' | 'none';
25
+ declare const REASONS: {
26
+ readonly inputChange: "input-change";
27
+ readonly inputClear: "input-clear";
28
+ readonly inputBlur: "input-blur";
29
+ readonly inputPaste: "input-paste";
30
+ readonly keyboard: "keyboard";
31
+ readonly incrementPress: "increment-press";
32
+ readonly decrementPress: "decrement-press";
33
+ readonly wheel: "wheel";
34
+ readonly scrub: "scrub";
35
+ readonly none: "none";
36
+ };
37
+
38
+ /**
39
+ * Groups all parts of the number field and manages its state, parsing/formatting
40
+ * and value-change logic. A single directive drives the whole family — parts read
41
+ * signals and call methods off it through the root context.
42
+ *
43
+ * @see https://base-ui.com/react/components/number-field
44
+ */
45
+ declare class RdxNumberFieldRoot implements RdxFormValueControl<number | null> {
46
+ /** @ignore */
47
+ protected readonly cva: RdxControlValueAccessor<number | null>;
48
+ /** The id of the input element. */
49
+ readonly id: _angular_core.InputSignal<string>;
50
+ /** The minimum value of the field. */
51
+ readonly min: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
52
+ /** The maximum value of the field. */
53
+ readonly max: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
54
+ /**
55
+ * Amount to increment and decrement with the buttons, arrow keys and scrub area.
56
+ * @default 1
57
+ */
58
+ readonly step: _angular_core.InputSignalWithTransform<number, NumberInput>;
59
+ /**
60
+ * The step used when incrementing while the Alt key is held. Snaps to multiples of this value.
61
+ * @default 0.1
62
+ */
63
+ readonly smallStep: _angular_core.InputSignalWithTransform<number, NumberInput>;
64
+ /**
65
+ * The step used when incrementing while the Shift key is held. Snaps to multiples of this value.
66
+ * @default 10
67
+ */
68
+ readonly largeStep: _angular_core.InputSignalWithTransform<number, NumberInput>;
69
+ /**
70
+ * Whether the value should snap to the nearest step when incrementing or decrementing.
71
+ * @default false
72
+ */
73
+ readonly snapOnStep: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
74
+ /**
75
+ * When `true`, direct text entry may go outside the `min`/`max` range without clamping.
76
+ * Step interactions (arrow keys, buttons, wheel, scrub) still clamp.
77
+ * @default false
78
+ */
79
+ readonly allowOutOfRange: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
80
+ /**
81
+ * Whether the value can be changed with the mouse wheel while the input is focused.
82
+ * @default false
83
+ */
84
+ readonly allowWheelScrub: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
85
+ /** Options used to format the input value (forwarded to `Intl.NumberFormat`). */
86
+ readonly format: _angular_core.InputSignal<Intl.NumberFormatOptions | undefined>;
87
+ /** The locale used to parse and format the value. */
88
+ readonly locale: _angular_core.InputSignal<string>;
89
+ /**
90
+ * When `true`, the user cannot interact with the field.
91
+ * @default false
92
+ */
93
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
94
+ /**
95
+ * When `true`, the field is focusable but its value cannot be changed.
96
+ * @default false
97
+ */
98
+ readonly readonly: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
99
+ /**
100
+ * When `true`, the user must enter a value before the owning form can be submitted.
101
+ * @default false
102
+ */
103
+ readonly required: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
104
+ /** Name of the hidden input rendered by `[rdxNumberFieldHiddenInput]`, for form submission. */
105
+ readonly name: _angular_core.InputSignal<string | undefined>;
106
+ /** Id of the form the hidden input belongs to. Useful when it is rendered outside the form. */
107
+ readonly form: _angular_core.InputSignal<string | undefined>;
108
+ /** The uncontrolled value of the field when it is initially rendered. */
109
+ readonly defaultValue: _angular_core.InputSignal<number | undefined>;
110
+ /** The controlled value of the field. Use with `(onValueChange)` or two-way `[(value)]`. */
111
+ readonly value: _angular_core.ModelSignal<number | null>;
112
+ /** Emitted when the value changes (during interaction or programmatically). */
113
+ readonly onValueChange: _angular_core.OutputEmitterRef<number | null>;
114
+ /**
115
+ * Emitted when the value is committed: on blur after typing, or when a pointer is released
116
+ * after scrubbing or pressing a button. Fires together with `onValueChange` for keyboard input.
117
+ */
118
+ readonly onValueCommitted: _angular_core.OutputEmitterRef<number | null>;
119
+ /** @ignore The formatted text shown in the input element. */
120
+ readonly inputValue: _angular_core.WritableSignal<string>;
121
+ /** @ignore Whether a scrub gesture is in progress. */
122
+ readonly isScrubbing: _angular_core.WritableSignal<boolean>;
123
+ /** @ignore The native input element, registered by `[rdxNumberFieldInput]`. */
124
+ readonly inputEl: _angular_core.WritableSignal<HTMLInputElement | undefined>;
125
+ /**
126
+ * @ignore Gate that prevents the formatted value from overwriting in-progress typing.
127
+ * Plain field (not a signal): it is toggled imperatively inside event handlers.
128
+ */
129
+ allowInputSync: boolean;
130
+ /** @ignore Last value produced by `setValue`, used to report the committed value. */
131
+ lastChangedValue: number | null;
132
+ /** @ignore Whether a programmatic change is awaiting a commit. */
133
+ hasPendingCommit: boolean;
134
+ /** @ignore */
135
+ readonly isDisabled: _angular_core.Signal<boolean>;
136
+ private readonly formatter;
137
+ private readonly parser;
138
+ /** @ignore The current numeric value (`null` when empty). */
139
+ readonly currentValue: _angular_core.Signal<number | null>;
140
+ /** @ignore */
141
+ readonly minWithDefault: _angular_core.Signal<number>;
142
+ /** @ignore */
143
+ readonly maxWithDefault: _angular_core.Signal<number>;
144
+ /** @ignore */
145
+ readonly minWithZeroDefault: _angular_core.Signal<number>;
146
+ /** @ignore Whether incrementing further is a no-op (value already at max). */
147
+ readonly isIncrementDisabled: _angular_core.Signal<boolean>;
148
+ /** @ignore Whether decrementing further is a no-op (value already at min). */
149
+ readonly isDecrementDisabled: _angular_core.Signal<boolean>;
150
+ /** @ignore Software-keyboard hint based on whether the format allows fractional digits. */
151
+ readonly inputMode: _angular_core.Signal<InputMode>;
152
+ constructor();
153
+ /** @ignore Formats a numeric value to its display string (empty for `null`/`NaN`). */
154
+ formatNumber(value: number | null): string;
155
+ /** @ignore Parses a display string to a number, returning `null` when not parseable. */
156
+ parseNumber(text: string): number | null;
157
+ /** @ignore Whether `text` is a valid partial number for the current locale and bounds. */
158
+ isValidPartial(text: string): boolean;
159
+ /** @ignore The step magnitude for an interaction, honouring Alt (small) and Shift (large). */
160
+ getStepAmount(event?: {
161
+ altKey?: boolean;
162
+ shiftKey?: boolean;
163
+ }): number;
164
+ /** @ignore Registers the native input element. */
165
+ registerInput(el: HTMLInputElement): void;
166
+ /** @ignore Sets the displayed text without changing the numeric value. */
167
+ setInputValue(text: string): void;
168
+ /** @ignore */
169
+ markAsTouched(): void;
170
+ /**
171
+ * @ignore
172
+ * Validates and applies a candidate value, emitting `onValueChange` when it changes.
173
+ * Returns whether a change was fired.
174
+ */
175
+ setValue(unvalidatedValue: number | null, reason: NumberFieldChangeReason, event?: Event, direction?: Direction): boolean;
176
+ /**
177
+ * @ignore
178
+ * Increments (or decrements) the value by `amount * direction`, starting from `currentValue`
179
+ * when supplied (the live, possibly-dirty input value) or the committed value otherwise.
180
+ */
181
+ incrementValue(amount: number, params: {
182
+ direction: Direction;
183
+ currentValue?: number | null;
184
+ event?: Event;
185
+ reason: NumberFieldChangeReason;
186
+ }): boolean;
187
+ /** @ignore Emits the committed value at the end of an interaction. */
188
+ commitValue(value: number | null): void;
189
+ private applyValue;
190
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldRoot, never>;
191
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldRoot, "div[rdxNumberFieldRoot]", ["rdxNumberFieldRoot"], { "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; }; "smallStep": { "alias": "smallStep"; "required": false; "isSignal": true; }; "largeStep": { "alias": "largeStep"; "required": false; "isSignal": true; }; "snapOnStep": { "alias": "snapOnStep"; "required": false; "isSignal": true; }; "allowOutOfRange": { "alias": "allowOutOfRange"; "required": false; "isSignal": true; }; "allowWheelScrub": { "alias": "allowWheelScrub"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; "onValueCommitted": "onValueCommitted"; }, never, never, true, [{ directive: typeof i1.RdxControlValueAccessor; inputs: { "value": "value"; "disabled": "disabled"; }; outputs: {}; }]>;
192
+ }
193
+
194
+ /**
195
+ * Groups the input with the increment and decrement buttons.
196
+ *
197
+ * @see https://base-ui.com/react/components/number-field
198
+ */
199
+ declare class RdxNumberFieldGroup {
200
+ protected readonly rootContext: _radix_ng_primitives_number_field.RdxNumberFieldRoot;
201
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldGroup, never>;
202
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldGroup, "div[rdxNumberFieldGroup]", ["rdxNumberFieldGroup"], {}, {}, never, never, true, never>;
203
+ }
204
+
205
+ /**
206
+ * The native text input that displays the formatted value and accepts typed input.
207
+ *
208
+ * @see https://base-ui.com/react/components/number-field
209
+ */
210
+ declare class RdxNumberFieldInput {
211
+ private readonly elementRef;
212
+ protected readonly rootContext: _radix_ng_primitives_number_field.RdxNumberFieldRoot;
213
+ /** Browsers place the caret at the start; we move it to the end on the first focus. */
214
+ private hasTouchedInput;
215
+ constructor();
216
+ onFocus(event: FocusEvent): void;
217
+ onBeforeInput(event: InputEvent): void;
218
+ onInput(event: Event): void;
219
+ onKeydown(event: KeyboardEvent): void;
220
+ onPaste(event: ClipboardEvent): void;
221
+ onBlur(event: FocusEvent): void;
222
+ onWheel(event: WheelEvent): void;
223
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldInput, never>;
224
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldInput, "input[rdxNumberFieldInput]", ["rdxNumberFieldInput"], {}, {}, never, never, true, never>;
225
+ }
226
+
227
+ /**
228
+ * The hidden native `input[type=number]` that mirrors the field value for native form submission
229
+ * and browser constraint validation (min/max/step/required). Place it inside the root, alongside
230
+ * the visible `[rdxNumberFieldInput]`.
231
+ *
232
+ * @see https://base-ui.com/react/components/number-field
233
+ */
234
+ declare class RdxNumberFieldHiddenInput {
235
+ protected readonly rootContext: _radix_ng_primitives_number_field.RdxNumberFieldRoot;
236
+ /** Move focus to the visible input when the hidden one is focused (e.g. via form validation). */
237
+ onFocus(): void;
238
+ /** Handle browser autofill, which writes directly to the hidden numeric input. */
239
+ onChange(event: Event): void;
240
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldHiddenInput, never>;
241
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldHiddenInput, "input[rdxNumberFieldHiddenInput]", ["rdxNumberFieldHiddenInput"], {}, {}, never, never, true, never>;
242
+ }
243
+
244
+ /**
245
+ * Coerces an optional numeric input, returning `undefined` for nullish/empty/non-numeric values.
246
+ * Unlike `numberAttribute`, `numberOrUndefined(undefined)` is `undefined` (not `NaN`), so an unset
247
+ * `[min]`/`[max]` does not poison clamping.
248
+ */
249
+ declare function numberOrUndefined(value: NumberInput): number | undefined;
250
+ /** Default step used when no `step` is provided. */
251
+ declare const DEFAULT_STEP = 1;
252
+ /** Delay between auto-repeat ticks while holding an increment/decrement button. */
253
+ declare const CHANGE_VALUE_TICK_DELAY = 60;
254
+ /** Delay before auto-repeat starts while holding an increment/decrement button. */
255
+ declare const START_AUTO_CHANGE_DELAY = 400;
256
+ /** Pointer travel (px) that cancels a hold, treating the gesture as a scroll. */
257
+ declare const SCROLLING_POINTER_MOVE_DISTANCE = 8;
258
+ /** Reactive `Intl`-backed formatter built from the current locale and format options. */
259
+ declare function useNumberFormatter(locale: Signal<string>, options?: Signal<Intl.NumberFormatOptions | undefined>): Signal<NumberFormatter>;
260
+ /** Reactive `Intl`-backed parser built from the current locale and format options. */
261
+ declare function useNumberParser(locale: Signal<string>, options?: Signal<Intl.NumberFormatOptions | undefined>): Signal<NumberParser>;
262
+ /** Whether the format options would cause `Intl.NumberFormat` to round the value. */
263
+ declare function hasNumberFormatRoundingOptions(format?: Intl.NumberFormatOptions): boolean;
264
+ /**
265
+ * Strips floating-point representation errors (e.g. `0.1 + 0.2`) using the format's
266
+ * rounding options when present, otherwise rounding to {@link DEFAULT_DIGITS} digits.
267
+ */
268
+ declare function removeFloatingPointErrors(value: number, locale: string, format?: Intl.NumberFormatOptions): number;
269
+ interface ValidateOptions {
270
+ step: number | undefined;
271
+ minWithDefault: number;
272
+ maxWithDefault: number;
273
+ minWithZeroDefault: number;
274
+ format: Intl.NumberFormatOptions | undefined;
275
+ locale: string;
276
+ snapOnStep: boolean;
277
+ small: boolean;
278
+ clamp: boolean;
279
+ }
280
+ /**
281
+ * Snaps (optionally), clamps (optionally) and rounds an unvalidated value, mirroring
282
+ * Base UI's `toValidatedNumber`. Snapping happens before clamping so non-step-aligned
283
+ * boundaries stay reachable.
284
+ */
285
+ declare function toValidatedNumber(value: number | null, options: ValidateOptions): number | null;
286
+ interface PressAndHoldOptions {
287
+ /** Whether interaction is currently blocked (disabled or read-only). */
288
+ disabled: () => boolean;
289
+ /** Delay before the first auto-repeat tick. */
290
+ startDelay: number;
291
+ /** Delay between subsequent auto-repeat ticks. */
292
+ tickDelay: number;
293
+ /** Pointer travel (px) that cancels the hold as a scroll. */
294
+ scrollDistance: number;
295
+ /** Runs on each tick; return `false` to stop auto-repeating (e.g. a bound was hit). */
296
+ tick: (event: PointerEvent) => boolean | void;
297
+ /** Runs once when the press ends (pointerup / cancel / scroll). */
298
+ onStop?: (event: PointerEvent) => void;
299
+ }
300
+ interface PressAndHold {
301
+ readonly isPressing: Signal<boolean>;
302
+ onPointerDown(event: PointerEvent): void;
303
+ /** Whether the following synthetic `click` should be ignored (a hold already ticked). */
304
+ shouldSkipClick(): boolean;
305
+ }
306
+ /**
307
+ * Pointer press-and-hold with auto-repeat, modelled on Base UI's `usePressAndHold`.
308
+ * Must be called in an injection context — it registers cleanup via `DestroyRef`.
309
+ */
310
+ declare function createPressAndHold(options: PressAndHoldOptions): PressAndHold;
311
+
312
+ /**
313
+ * Shared behaviour for the increment and decrement stepper buttons: single-press,
314
+ * press-and-hold auto-repeat, and committing a dirty (typed-but-not-blurred) input
315
+ * value before stepping.
316
+ *
317
+ * @see https://base-ui.com/react/components/number-field
318
+ */
319
+ declare abstract class RdxNumberFieldButton {
320
+ protected readonly rootContext: _radix_ng_primitives_number_field.RdxNumberFieldRoot;
321
+ /** Whether this is the increment (`+1`) button; `false` for decrement (`-1`). */
322
+ protected abstract readonly isIncrement: boolean;
323
+ /**
324
+ * When `true`, the button is disabled in addition to inheriting the root's disabled state.
325
+ * @default false
326
+ */
327
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
328
+ /** @ignore Disabled for display/focus purposes (own state, root disabled, or bound reached). */
329
+ readonly buttonDisabled: _angular_core.Signal<boolean>;
330
+ /** @ignore Disabled for interaction purposes (also blocked while read-only). */
331
+ private readonly interactionDisabled;
332
+ private get direction();
333
+ private get pressReason();
334
+ /** @ignore */
335
+ readonly press: PressAndHold;
336
+ constructor();
337
+ onClick(event: MouseEvent): void;
338
+ onPointerDown(event: PointerEvent): void;
339
+ /** Commits a typed-but-not-yet-blurred input value so stepping starts from it. */
340
+ private commitDirtyValue;
341
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldButton, never>;
342
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldButton, never, never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
343
+ }
344
+
345
+ /**
346
+ * A stepper button that increases the field value when clicked or held.
347
+ *
348
+ * @see https://base-ui.com/react/components/number-field
349
+ */
350
+ declare class RdxNumberFieldIncrement extends RdxNumberFieldButton {
351
+ protected readonly isIncrement = true;
352
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldIncrement, never>;
353
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldIncrement, "button[rdxNumberFieldIncrement]", ["rdxNumberFieldIncrement"], {}, {}, never, never, true, never>;
354
+ }
355
+
356
+ /**
357
+ * A stepper button that decreases the field value when clicked or held.
358
+ *
359
+ * @see https://base-ui.com/react/components/number-field
360
+ */
361
+ declare class RdxNumberFieldDecrement extends RdxNumberFieldButton {
362
+ protected readonly isIncrement = false;
363
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldDecrement, never>;
364
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldDecrement, "button[rdxNumberFieldDecrement]", ["rdxNumberFieldDecrement"], {}, {}, never, never, true, never>;
365
+ }
366
+
367
+ interface RdxNumberFieldScrubAreaContext {
368
+ /** Whether a scrub gesture is currently in progress. */
369
+ readonly isScrubbing: Signal<boolean>;
370
+ /** Whether the active scrub was started with touch input. */
371
+ readonly isTouchInput: Signal<boolean>;
372
+ /** Whether the browser denied the Pointer Lock request. */
373
+ readonly isPointerLockDenied: Signal<boolean>;
374
+ /** Registers (or clears) the virtual cursor element so the scrub area can move it. */
375
+ registerCursor(element: HTMLElement | null): void;
376
+ }
377
+ /**
378
+ * Context shared from the scrub area to its virtual cursor child.
379
+ *
380
+ * @see https://base-ui.com/react/components/number-field
381
+ */
382
+ declare const injectNumberFieldScrubAreaContext: (optional?: boolean) => RdxNumberFieldScrubAreaContext | null;
383
+ declare const provideNumberFieldScrubAreaContext: (useFactory: () => RdxNumberFieldScrubAreaContext) => _angular_core.Provider;
384
+
385
+ type ScrubDirection = 'horizontal' | 'vertical';
386
+ /**
387
+ * An interactive area where the user can click and drag to change the field value.
388
+ * Uses the Pointer Lock API for continuous dragging (disabled in Safari to avoid layout shift).
389
+ *
390
+ * @see https://base-ui.com/react/components/number-field
391
+ */
392
+ declare class RdxNumberFieldScrubArea {
393
+ protected readonly rootContext: _radix_ng_primitives_number_field.RdxNumberFieldRoot;
394
+ /**
395
+ * The direction the cursor must move to change the value.
396
+ * @default 'horizontal'
397
+ */
398
+ readonly direction: _angular_core.InputSignal<ScrubDirection>;
399
+ /**
400
+ * How many pixels the cursor must move before the value changes. Higher is less sensitive.
401
+ * @default 2
402
+ */
403
+ readonly pixelSensitivity: _angular_core.InputSignalWithTransform<number, NumberInput>;
404
+ /**
405
+ * If set, the distance the cursor may move from the scrub area center before it loops back.
406
+ */
407
+ readonly teleportDistance: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
408
+ protected readonly isScrubbing: _angular_core.WritableSignal<boolean>;
409
+ private readonly isTouchInput;
410
+ private readonly isPointerLockDenied;
411
+ private readonly cursorEl;
412
+ private readonly scrubAreaEl;
413
+ private isScrubbingRef;
414
+ private didMove;
415
+ private pointerDownTarget;
416
+ private virtualCursorCoords;
417
+ private visualScale;
418
+ /** @ignore Exposed to the scrub-area context provider. */
419
+ readonly context: RdxNumberFieldScrubAreaContext;
420
+ private readonly canScrub;
421
+ constructor();
422
+ onPointerDown(event: PointerEvent): Promise<void>;
423
+ onTouchStart(event: TouchEvent): void;
424
+ private onScrub;
425
+ private onScrubbingChange;
426
+ private updateCursorTransform;
427
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldScrubArea, never>;
428
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldScrubArea, "[rdxNumberFieldScrubArea]", ["rdxNumberFieldScrubArea"], { "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "pixelSensitivity": { "alias": "pixelSensitivity"; "required": false; "isSignal": true; }; "teleportDistance": { "alias": "teleportDistance"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
429
+ }
430
+
431
+ /**
432
+ * A custom element shown instead of the native cursor while scrubbing. It is portaled to the
433
+ * document body and positioned with the Pointer Lock API. Hidden in Safari (which would shift
434
+ * layout with the native pointer-lock notification) and for touch input.
435
+ *
436
+ * @see https://base-ui.com/react/components/number-field
437
+ */
438
+ declare class RdxNumberFieldScrubAreaCursor {
439
+ private readonly elementRef;
440
+ private readonly scrubContext;
441
+ protected readonly shouldRender: _angular_core.Signal<boolean>;
442
+ constructor();
443
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldScrubAreaCursor, never>;
444
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldScrubAreaCursor, "[rdxNumberFieldScrubAreaCursor]", ["rdxNumberFieldScrubAreaCursor"], {}, {}, never, never, true, [{ directive: typeof i1$1.RdxPortal; inputs: {}; outputs: {}; }]>;
445
+ }
446
+
447
+ /**
448
+ * The Number Field context exposes the root directive instance to every child part.
449
+ * The root owns all state, parsing/formatting and value-change logic; parts read
450
+ * signals and call methods off it.
451
+ *
452
+ * @see https://base-ui.com/react/components/number-field
453
+ */
454
+ declare const injectNumberFieldRootContext: (optional?: boolean) => RdxNumberFieldRoot | null;
455
+ declare const provideNumberFieldRootContext: (useFactory: () => RdxNumberFieldRoot) => _angular_core.Provider;
456
+
457
+ declare class RdxNumberFieldModule {
458
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldModule, never>;
459
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<RdxNumberFieldModule, never, [typeof RdxNumberFieldRoot, typeof RdxNumberFieldGroup, typeof RdxNumberFieldInput, typeof RdxNumberFieldHiddenInput, typeof RdxNumberFieldIncrement, typeof RdxNumberFieldDecrement, typeof RdxNumberFieldScrubArea, typeof RdxNumberFieldScrubAreaCursor], [typeof RdxNumberFieldRoot, typeof RdxNumberFieldGroup, typeof RdxNumberFieldInput, typeof RdxNumberFieldHiddenInput, typeof RdxNumberFieldIncrement, typeof RdxNumberFieldDecrement, typeof RdxNumberFieldScrubArea, typeof RdxNumberFieldScrubAreaCursor]>;
460
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<RdxNumberFieldModule>;
461
+ }
462
+
463
+ export { CHANGE_VALUE_TICK_DELAY, DEFAULT_STEP, REASONS, RdxNumberFieldButton, RdxNumberFieldDecrement, RdxNumberFieldGroup, RdxNumberFieldHiddenInput, RdxNumberFieldIncrement, RdxNumberFieldInput, RdxNumberFieldModule, RdxNumberFieldRoot, RdxNumberFieldScrubArea, RdxNumberFieldScrubAreaCursor, SCROLLING_POINTER_MOVE_DISTANCE, START_AUTO_CHANGE_DELAY, createPressAndHold, hasNumberFormatRoundingOptions, injectNumberFieldRootContext, injectNumberFieldScrubAreaContext, numberOrUndefined, provideNumberFieldRootContext, provideNumberFieldScrubAreaContext, removeFloatingPointErrors, toValidatedNumber, useNumberFormatter, useNumberParser };
464
+ export type { Direction, InputMode, NumberFieldChangeReason, PressAndHold, PressAndHoldOptions, RdxNumberFieldScrubAreaContext, ValidateOptions };
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { model, computed, InjectionToken } from '@angular/core';
3
- import { NumberInput, BooleanInput } from '@angular/cdk/coercion';
2
+ import { InjectionToken, model, computed } from '@angular/core';
3
+ import { NumberInput, BooleanInput } from '@radix-ng/primitives/core';
4
4
 
5
5
  declare class RdxPaginationRootDirective {
6
6
  readonly defaultPage: i0.InputSignalWithTransform<number, NumberInput>;