@radix-ng/primitives 0.51.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 (178) hide show
  1. package/fesm2022/radix-ng-primitives-accordion.mjs +105 -38
  2. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  3. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +221 -129
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-arrow.mjs +20 -4
  6. package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -1
  7. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-avatar.mjs +54 -61
  9. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-button.mjs +123 -0
  11. package/fesm2022/radix-ng-primitives-button.mjs.map +1 -0
  12. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  13. package/fesm2022/radix-ng-primitives-checkbox.mjs +378 -54
  14. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  15. package/fesm2022/radix-ng-primitives-collapsible.mjs +182 -81
  16. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  17. package/fesm2022/radix-ng-primitives-collection.mjs +40 -57
  18. package/fesm2022/radix-ng-primitives-collection.mjs.map +1 -1
  19. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-context-menu.mjs +140 -424
  21. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-core.mjs +735 -744
  23. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-cropper.mjs +1 -0
  25. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-date-field.mjs +51 -45
  27. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-dialog.mjs +655 -327
  29. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +70 -46
  31. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-drawer.mjs +1059 -0
  33. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -0
  34. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  35. package/fesm2022/radix-ng-primitives-field.mjs +363 -0
  36. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -0
  37. package/fesm2022/radix-ng-primitives-fieldset.mjs +79 -0
  38. package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -0
  39. package/fesm2022/radix-ng-primitives-focus-scope.mjs +23 -8
  40. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  41. package/fesm2022/radix-ng-primitives-input.mjs +172 -0
  42. package/fesm2022/radix-ng-primitives-input.mjs.map +1 -0
  43. package/fesm2022/radix-ng-primitives-label.mjs +6 -6
  44. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  45. package/fesm2022/radix-ng-primitives-menu.mjs +1480 -344
  46. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  47. package/fesm2022/radix-ng-primitives-menubar.mjs +290 -162
  48. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  49. package/fesm2022/radix-ng-primitives-meter.mjs +271 -0
  50. package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -0
  51. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1052 -1553
  52. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  53. package/fesm2022/radix-ng-primitives-number-field.mjs +1102 -367
  54. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  55. package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-popover.mjs +978 -989
  57. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-popper.mjs +91 -41
  59. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-portal.mjs +34 -10
  61. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-presence.mjs +134 -246
  63. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-preview-card.mjs +997 -0
  65. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -0
  66. package/fesm2022/radix-ng-primitives-progress.mjs +223 -84
  67. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  68. package/fesm2022/radix-ng-primitives-radio.mjs +191 -51
  69. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  70. package/fesm2022/radix-ng-primitives-roving-focus.mjs +96 -50
  71. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  72. package/fesm2022/radix-ng-primitives-select.mjs +791 -509
  73. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  74. package/fesm2022/radix-ng-primitives-separator.mjs +12 -35
  75. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  76. package/fesm2022/radix-ng-primitives-slider.mjs +969 -717
  77. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  78. package/fesm2022/radix-ng-primitives-stepper.mjs +15 -19
  79. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  80. package/fesm2022/radix-ng-primitives-switch.mjs +125 -113
  81. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  82. package/fesm2022/radix-ng-primitives-tabs.mjs +381 -108
  83. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  84. package/fesm2022/radix-ng-primitives-time-field.mjs +55 -46
  85. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  86. package/fesm2022/radix-ng-primitives-toggle-group.mjs +121 -247
  87. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  88. package/fesm2022/radix-ng-primitives-toggle.mjs +98 -61
  89. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  90. package/fesm2022/radix-ng-primitives-toolbar.mjs +303 -92
  91. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  92. package/fesm2022/radix-ng-primitives-tooltip.mjs +690 -1071
  93. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  94. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +25 -66
  95. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  96. package/meter/README.md +3 -0
  97. package/navigation-menu/README.md +2 -1
  98. package/package.json +31 -18
  99. package/portal/README.md +2 -0
  100. package/preview-card/README.md +3 -0
  101. package/schematics/collection.json +1 -0
  102. package/schematics/ng-add/index.d.ts +3 -2
  103. package/schematics/ng-add/index.js +62 -31
  104. package/schematics/ng-add/index.js.map +1 -1
  105. package/schematics/ng-add/package-config.d.ts +4 -2
  106. package/schematics/ng-add/package-config.js +10 -2
  107. package/schematics/ng-add/package-config.js.map +1 -1
  108. package/schematics/ng-add/schema.d.ts +3 -0
  109. package/schematics/ng-add/schema.js +3 -0
  110. package/schematics/ng-add/schema.js.map +1 -0
  111. package/schematics/ng-add/schema.json +14 -0
  112. package/select/README.md +2 -0
  113. package/types/radix-ng-primitives-accordion.d.ts +48 -14
  114. package/types/radix-ng-primitives-alert-dialog.d.ts +95 -38
  115. package/types/radix-ng-primitives-arrow.d.ts +1 -1
  116. package/types/radix-ng-primitives-aspect-ratio.d.ts +1 -1
  117. package/types/radix-ng-primitives-avatar.d.ts +7 -11
  118. package/types/radix-ng-primitives-button.d.ts +73 -0
  119. package/types/radix-ng-primitives-calendar.d.ts +1 -2
  120. package/types/radix-ng-primitives-checkbox.d.ts +201 -32
  121. package/types/radix-ng-primitives-collapsible.d.ts +112 -39
  122. package/types/radix-ng-primitives-collection.d.ts +38 -34
  123. package/types/radix-ng-primitives-config.d.ts +1 -1
  124. package/types/radix-ng-primitives-context-menu.d.ts +60 -116
  125. package/types/radix-ng-primitives-core.d.ts +307 -236
  126. package/types/radix-ng-primitives-cropper.d.ts +2 -2
  127. package/types/radix-ng-primitives-date-field.d.ts +38 -23
  128. package/types/radix-ng-primitives-dialog.d.ts +282 -165
  129. package/types/radix-ng-primitives-dismissable-layer.d.ts +15 -7
  130. package/types/radix-ng-primitives-drawer.d.ts +448 -0
  131. package/types/radix-ng-primitives-editable.d.ts +1 -1
  132. package/types/radix-ng-primitives-field.d.ts +373 -0
  133. package/types/radix-ng-primitives-fieldset.d.ts +48 -0
  134. package/types/radix-ng-primitives-focus-scope.d.ts +13 -5
  135. package/types/radix-ng-primitives-input.d.ts +87 -0
  136. package/types/radix-ng-primitives-label.d.ts +0 -1
  137. package/types/radix-ng-primitives-menu.d.ts +572 -99
  138. package/types/radix-ng-primitives-menubar.d.ts +60 -50
  139. package/types/radix-ng-primitives-meter.d.ts +193 -0
  140. package/types/radix-ng-primitives-navigation-menu.d.ts +422 -340
  141. package/types/radix-ng-primitives-number-field.d.ts +405 -145
  142. package/types/radix-ng-primitives-pagination.d.ts +2 -2
  143. package/types/radix-ng-primitives-popover.d.ts +365 -351
  144. package/types/radix-ng-primitives-popper.d.ts +49 -9
  145. package/types/radix-ng-primitives-portal.d.ts +14 -6
  146. package/types/radix-ng-primitives-presence.d.ts +28 -76
  147. package/types/radix-ng-primitives-preview-card.d.ts +359 -0
  148. package/types/radix-ng-primitives-progress.d.ts +174 -48
  149. package/types/radix-ng-primitives-radio.d.ts +55 -25
  150. package/types/radix-ng-primitives-roving-focus.d.ts +30 -21
  151. package/types/radix-ng-primitives-select.d.ts +475 -177
  152. package/types/radix-ng-primitives-separator.d.ts +7 -32
  153. package/types/radix-ng-primitives-slider.d.ts +315 -201
  154. package/types/radix-ng-primitives-stepper.d.ts +5 -7
  155. package/types/radix-ng-primitives-switch.d.ts +86 -71
  156. package/types/radix-ng-primitives-tabs.d.ts +213 -79
  157. package/types/radix-ng-primitives-time-field.d.ts +42 -27
  158. package/types/radix-ng-primitives-toggle-group.d.ts +85 -164
  159. package/types/radix-ng-primitives-toggle.d.ts +43 -53
  160. package/types/radix-ng-primitives-toolbar.d.ts +163 -38
  161. package/types/radix-ng-primitives-tooltip.d.ts +347 -384
  162. package/types/radix-ng-primitives-visually-hidden.d.ts +19 -19
  163. package/dropdown-menu/README.md +0 -1
  164. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +0 -581
  165. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +0 -1
  166. package/fesm2022/radix-ng-primitives-hover-card.mjs +0 -1238
  167. package/fesm2022/radix-ng-primitives-hover-card.mjs.map +0 -1
  168. package/fesm2022/radix-ng-primitives-select2.mjs +0 -897
  169. package/fesm2022/radix-ng-primitives-select2.mjs.map +0 -1
  170. package/fesm2022/radix-ng-primitives-tooltip2.mjs +0 -735
  171. package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +0 -1
  172. package/hover-card/README.md +0 -3
  173. package/select2/README.md +0 -3
  174. package/tooltip2/README.md +0 -3
  175. package/types/radix-ng-primitives-dropdown-menu.d.ts +0 -171
  176. package/types/radix-ng-primitives-hover-card.d.ts +0 -471
  177. package/types/radix-ng-primitives-select2.d.ts +0 -511
  178. package/types/radix-ng-primitives-tooltip2.d.ts +0 -325
@@ -0,0 +1,373 @@
1
+ import * as _radix_ng_primitives_field from '@radix-ng/primitives/field';
2
+ import * as _angular_core from '@angular/core';
3
+ import { BooleanInput } from '@radix-ng/primitives/core';
4
+
5
+ /**
6
+ * Connects a form control to the field label, description, error, and state.
7
+ *
8
+ * @group Components
9
+ */
10
+ declare class RdxFieldControl {
11
+ protected readonly rootContext: {
12
+ controlId: _angular_core.WritableSignal<string>;
13
+ descriptionIds: _angular_core.WritableSignal<string[]>;
14
+ errorIds: _angular_core.WritableSignal<string[]>;
15
+ invalidState: _angular_core.Signal<boolean>;
16
+ disabledState: _angular_core.Signal<boolean>;
17
+ requiredState: _angular_core.Signal<boolean>;
18
+ dirtyState: _angular_core.Signal<boolean>;
19
+ touchedState: _angular_core.Signal<boolean>;
20
+ filledState: _angular_core.Signal<boolean>;
21
+ focusedState: _angular_core.Signal<boolean>;
22
+ setControlId: (id: string) => void;
23
+ addDescriptionId: (id: string) => void;
24
+ removeDescriptionId: (id: string) => void;
25
+ addErrorId: (id: string) => void;
26
+ removeErrorId: (id: string) => void;
27
+ setFocused: (value: boolean) => void;
28
+ setFilled: (value: boolean) => void;
29
+ setDirty: (value: boolean) => void;
30
+ setTouched: (value: boolean) => void;
31
+ setStateProvider: (provider: _radix_ng_primitives_field.RdxFieldState | null) => _radix_ng_primitives_field.RdxFieldState | null;
32
+ hasStateProvider: _angular_core.Signal<boolean>;
33
+ };
34
+ private readonly elementRef;
35
+ private initialValue;
36
+ /**
37
+ * Control id. Labels and descriptions use this value for accessible relationships.
38
+ *
39
+ * @group Props
40
+ */
41
+ readonly id: _angular_core.InputSignal<string>;
42
+ protected readonly describedBy: _angular_core.Signal<string | undefined>;
43
+ constructor();
44
+ onFocus(): void;
45
+ onBlur(): void;
46
+ syncFilled(): void;
47
+ protected isNativeFormControl(): boolean;
48
+ protected readonly dataAttr: (value: boolean) => "" | undefined;
49
+ private currentValue;
50
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxFieldControl, never>;
51
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxFieldControl, "[rdxFieldControl]", ["rdxFieldControl"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
52
+ }
53
+
54
+ /**
55
+ * Describes the field control.
56
+ *
57
+ * @group Components
58
+ */
59
+ declare class RdxFieldDescription {
60
+ protected readonly rootContext: {
61
+ controlId: _angular_core.WritableSignal<string>;
62
+ descriptionIds: _angular_core.WritableSignal<string[]>;
63
+ errorIds: _angular_core.WritableSignal<string[]>;
64
+ invalidState: _angular_core.Signal<boolean>;
65
+ disabledState: _angular_core.Signal<boolean>;
66
+ requiredState: _angular_core.Signal<boolean>;
67
+ dirtyState: _angular_core.Signal<boolean>;
68
+ touchedState: _angular_core.Signal<boolean>;
69
+ filledState: _angular_core.Signal<boolean>;
70
+ focusedState: _angular_core.Signal<boolean>;
71
+ setControlId: (id: string) => void;
72
+ addDescriptionId: (id: string) => void;
73
+ removeDescriptionId: (id: string) => void;
74
+ addErrorId: (id: string) => void;
75
+ removeErrorId: (id: string) => void;
76
+ setFocused: (value: boolean) => void;
77
+ setFilled: (value: boolean) => void;
78
+ setDirty: (value: boolean) => void;
79
+ setTouched: (value: boolean) => void;
80
+ setStateProvider: (provider: _radix_ng_primitives_field.RdxFieldState | null) => _radix_ng_primitives_field.RdxFieldState | null;
81
+ hasStateProvider: _angular_core.Signal<boolean>;
82
+ };
83
+ /**
84
+ * Description id.
85
+ *
86
+ * @group Props
87
+ */
88
+ readonly id: _angular_core.InputSignal<string>;
89
+ constructor();
90
+ protected readonly dataAttr: (value: boolean) => "" | undefined;
91
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxFieldDescription, never>;
92
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxFieldDescription, "[rdxFieldDescription]", ["rdxFieldDescription"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
93
+ }
94
+
95
+ /**
96
+ * Describes an invalid field control.
97
+ *
98
+ * @group Components
99
+ */
100
+ declare class RdxFieldError {
101
+ protected readonly rootContext: {
102
+ controlId: _angular_core.WritableSignal<string>;
103
+ descriptionIds: _angular_core.WritableSignal<string[]>;
104
+ errorIds: _angular_core.WritableSignal<string[]>;
105
+ invalidState: _angular_core.Signal<boolean>;
106
+ disabledState: _angular_core.Signal<boolean>;
107
+ requiredState: _angular_core.Signal<boolean>;
108
+ dirtyState: _angular_core.Signal<boolean>;
109
+ touchedState: _angular_core.Signal<boolean>;
110
+ filledState: _angular_core.Signal<boolean>;
111
+ focusedState: _angular_core.Signal<boolean>;
112
+ setControlId: (id: string) => void;
113
+ addDescriptionId: (id: string) => void;
114
+ removeDescriptionId: (id: string) => void;
115
+ addErrorId: (id: string) => void;
116
+ removeErrorId: (id: string) => void;
117
+ setFocused: (value: boolean) => void;
118
+ setFilled: (value: boolean) => void;
119
+ setDirty: (value: boolean) => void;
120
+ setTouched: (value: boolean) => void;
121
+ setStateProvider: (provider: _radix_ng_primitives_field.RdxFieldState | null) => _radix_ng_primitives_field.RdxFieldState | null;
122
+ hasStateProvider: _angular_core.Signal<boolean>;
123
+ };
124
+ /**
125
+ * Error message id.
126
+ *
127
+ * @group Props
128
+ */
129
+ readonly id: _angular_core.InputSignal<string>;
130
+ constructor();
131
+ protected readonly dataAttr: (value: boolean) => "" | undefined;
132
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxFieldError, never>;
133
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxFieldError, "[rdxFieldError]", ["rdxFieldError"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
134
+ }
135
+
136
+ /**
137
+ * Labels the field control.
138
+ *
139
+ * @group Components
140
+ */
141
+ declare class RdxFieldLabel {
142
+ protected readonly rootContext: {
143
+ controlId: _angular_core.WritableSignal<string>;
144
+ descriptionIds: _angular_core.WritableSignal<string[]>;
145
+ errorIds: _angular_core.WritableSignal<string[]>;
146
+ invalidState: _angular_core.Signal<boolean>;
147
+ disabledState: _angular_core.Signal<boolean>;
148
+ requiredState: _angular_core.Signal<boolean>;
149
+ dirtyState: _angular_core.Signal<boolean>;
150
+ touchedState: _angular_core.Signal<boolean>;
151
+ filledState: _angular_core.Signal<boolean>;
152
+ focusedState: _angular_core.Signal<boolean>;
153
+ setControlId: (id: string) => void;
154
+ addDescriptionId: (id: string) => void;
155
+ removeDescriptionId: (id: string) => void;
156
+ addErrorId: (id: string) => void;
157
+ removeErrorId: (id: string) => void;
158
+ setFocused: (value: boolean) => void;
159
+ setFilled: (value: boolean) => void;
160
+ setDirty: (value: boolean) => void;
161
+ setTouched: (value: boolean) => void;
162
+ setStateProvider: (provider: _radix_ng_primitives_field.RdxFieldState | null) => _radix_ng_primitives_field.RdxFieldState | null;
163
+ hasStateProvider: _angular_core.Signal<boolean>;
164
+ };
165
+ /**
166
+ * Label id.
167
+ *
168
+ * @group Props
169
+ */
170
+ readonly id: _angular_core.InputSignal<string>;
171
+ readonly htmlFor: () => string;
172
+ protected readonly dataAttr: (value: boolean) => "" | undefined;
173
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxFieldLabel, never>;
174
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxFieldLabel, "[rdxFieldLabel]", ["rdxFieldLabel"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
175
+ }
176
+
177
+ /**
178
+ * External owner of field state. An adapter (e.g. a future Signal Forms
179
+ * `[rdxSignalField]` directive, or a Reactive Forms bridge) registers one via
180
+ * `setStateProvider` so Field reads authoritative form state instead of
181
+ * self-computing it from the DOM. Each member is an optional signal-like
182
+ * accessor; only the states the adapter owns need to be provided — the rest
183
+ * fall back to the root's inputs / DOM heuristic. Keeping these as plain
184
+ * `() => boolean` accessors keeps Field framework-agnostic (no dependency on
185
+ * `@angular/forms/signals`).
186
+ *
187
+ * See ADR 0004 and `signal-forms-readiness.md` (prep #4).
188
+ */
189
+ interface RdxFieldState {
190
+ invalid?: () => boolean;
191
+ disabled?: () => boolean;
192
+ required?: () => boolean;
193
+ dirty?: () => boolean;
194
+ touched?: () => boolean;
195
+ filled?: () => boolean;
196
+ focused?: () => boolean;
197
+ }
198
+ declare const fieldRootContext: () => {
199
+ controlId: _angular_core.WritableSignal<string>;
200
+ descriptionIds: _angular_core.WritableSignal<string[]>;
201
+ errorIds: _angular_core.WritableSignal<string[]>;
202
+ invalidState: _angular_core.Signal<boolean>;
203
+ disabledState: _angular_core.Signal<boolean>;
204
+ requiredState: _angular_core.Signal<boolean>;
205
+ dirtyState: _angular_core.Signal<boolean>;
206
+ touchedState: _angular_core.Signal<boolean>;
207
+ filledState: _angular_core.Signal<boolean>;
208
+ focusedState: _angular_core.Signal<boolean>;
209
+ setControlId: (id: string) => void;
210
+ addDescriptionId: (id: string) => void;
211
+ removeDescriptionId: (id: string) => void;
212
+ addErrorId: (id: string) => void;
213
+ removeErrorId: (id: string) => void;
214
+ setFocused: (value: boolean) => void;
215
+ setFilled: (value: boolean) => void;
216
+ setDirty: (value: boolean) => void;
217
+ setTouched: (value: boolean) => void;
218
+ /**
219
+ * Register (or clear with `null`) an external owner of field state.
220
+ * While a provider is registered, any state it exposes takes precedence
221
+ * over the root inputs and the DOM-derived values. Returns the previous
222
+ * provider so adapters can restore it on teardown.
223
+ */
224
+ setStateProvider: (provider: RdxFieldState | null) => RdxFieldState | null;
225
+ hasStateProvider: _angular_core.Signal<boolean>;
226
+ };
227
+ type RdxFieldRootContext = ReturnType<typeof fieldRootContext>;
228
+ declare const injectFieldRootContext: (optional?: boolean) => {
229
+ controlId: _angular_core.WritableSignal<string>;
230
+ descriptionIds: _angular_core.WritableSignal<string[]>;
231
+ errorIds: _angular_core.WritableSignal<string[]>;
232
+ invalidState: _angular_core.Signal<boolean>;
233
+ disabledState: _angular_core.Signal<boolean>;
234
+ requiredState: _angular_core.Signal<boolean>;
235
+ dirtyState: _angular_core.Signal<boolean>;
236
+ touchedState: _angular_core.Signal<boolean>;
237
+ filledState: _angular_core.Signal<boolean>;
238
+ focusedState: _angular_core.Signal<boolean>;
239
+ setControlId: (id: string) => void;
240
+ addDescriptionId: (id: string) => void;
241
+ removeDescriptionId: (id: string) => void;
242
+ addErrorId: (id: string) => void;
243
+ removeErrorId: (id: string) => void;
244
+ setFocused: (value: boolean) => void;
245
+ setFilled: (value: boolean) => void;
246
+ setDirty: (value: boolean) => void;
247
+ setTouched: (value: boolean) => void;
248
+ /**
249
+ * Register (or clear with `null`) an external owner of field state.
250
+ * While a provider is registered, any state it exposes takes precedence
251
+ * over the root inputs and the DOM-derived values. Returns the previous
252
+ * provider so adapters can restore it on teardown.
253
+ */
254
+ setStateProvider: (provider: RdxFieldState | null) => RdxFieldState | null;
255
+ hasStateProvider: _angular_core.Signal<boolean>;
256
+ } | null;
257
+ declare const provideFieldRootContext: (useFactory: () => {
258
+ controlId: _angular_core.WritableSignal<string>;
259
+ descriptionIds: _angular_core.WritableSignal<string[]>;
260
+ errorIds: _angular_core.WritableSignal<string[]>;
261
+ invalidState: _angular_core.Signal<boolean>;
262
+ disabledState: _angular_core.Signal<boolean>;
263
+ requiredState: _angular_core.Signal<boolean>;
264
+ dirtyState: _angular_core.Signal<boolean>;
265
+ touchedState: _angular_core.Signal<boolean>;
266
+ filledState: _angular_core.Signal<boolean>;
267
+ focusedState: _angular_core.Signal<boolean>;
268
+ setControlId: (id: string) => void;
269
+ addDescriptionId: (id: string) => void;
270
+ removeDescriptionId: (id: string) => void;
271
+ addErrorId: (id: string) => void;
272
+ removeErrorId: (id: string) => void;
273
+ setFocused: (value: boolean) => void;
274
+ setFilled: (value: boolean) => void;
275
+ setDirty: (value: boolean) => void;
276
+ setTouched: (value: boolean) => void;
277
+ /**
278
+ * Register (or clear with `null`) an external owner of field state.
279
+ * While a provider is registered, any state it exposes takes precedence
280
+ * over the root inputs and the DOM-derived values. Returns the previous
281
+ * provider so adapters can restore it on teardown.
282
+ */
283
+ setStateProvider: (provider: RdxFieldState | null) => RdxFieldState | null;
284
+ hasStateProvider: _angular_core.Signal<boolean>;
285
+ }) => _angular_core.Provider;
286
+ /**
287
+ * Groups a form control with its label, description, error message, and field state.
288
+ *
289
+ * @group Components
290
+ */
291
+ declare class RdxFieldRoot {
292
+ /**
293
+ * Whether the field is invalid.
294
+ *
295
+ * @group Props
296
+ * @defaultValue false
297
+ */
298
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
299
+ /**
300
+ * Whether the field is disabled.
301
+ *
302
+ * @group Props
303
+ * @defaultValue false
304
+ */
305
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
306
+ /**
307
+ * Whether the field is required.
308
+ *
309
+ * @group Props
310
+ * @defaultValue false
311
+ */
312
+ readonly required: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
313
+ /**
314
+ * Whether the field value has changed from its initial value.
315
+ *
316
+ * @group Props
317
+ * @defaultValue false
318
+ */
319
+ readonly dirty: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
320
+ /**
321
+ * Whether the field has been blurred after receiving focus.
322
+ *
323
+ * @group Props
324
+ * @defaultValue false
325
+ */
326
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
327
+ /**
328
+ * Overrides whether the control has a non-empty value.
329
+ *
330
+ * @group Props
331
+ */
332
+ readonly filled: _angular_core.InputSignal<boolean | undefined>;
333
+ /**
334
+ * Overrides whether the control is focused.
335
+ *
336
+ * @group Props
337
+ */
338
+ readonly focused: _angular_core.InputSignal<boolean | undefined>;
339
+ readonly controlId: _angular_core.WritableSignal<string>;
340
+ readonly descriptionIds: _angular_core.WritableSignal<string[]>;
341
+ readonly errorIds: _angular_core.WritableSignal<string[]>;
342
+ readonly focusedValue: _angular_core.WritableSignal<boolean>;
343
+ readonly filledValue: _angular_core.WritableSignal<boolean>;
344
+ readonly dirtyValue: _angular_core.WritableSignal<boolean>;
345
+ readonly touchedValue: _angular_core.WritableSignal<boolean>;
346
+ /** External state owner registered through the context; `null` when Field self-computes. */
347
+ private readonly stateProvider;
348
+ /** Whether an external adapter currently owns field state. */
349
+ readonly hasStateProvider: _angular_core.Signal<boolean>;
350
+ readonly invalidState: _angular_core.Signal<boolean>;
351
+ readonly disabledState: _angular_core.Signal<boolean>;
352
+ readonly requiredState: _angular_core.Signal<boolean>;
353
+ readonly dirtyState: _angular_core.Signal<boolean>;
354
+ readonly touchedState: _angular_core.Signal<boolean>;
355
+ readonly filledState: _angular_core.Signal<boolean>;
356
+ readonly focusedState: _angular_core.Signal<boolean>;
357
+ protected readonly dataAttr: (value: boolean) => "" | undefined;
358
+ /**
359
+ * Register an external owner of field state, returning the previous one.
360
+ * @ignore
361
+ */
362
+ setStateProvider(provider: RdxFieldState | null): RdxFieldState | null;
363
+ /**
364
+ * Prefer the registered provider's value for `key` when it exposes one,
365
+ * otherwise fall back to the root inputs / DOM-derived signals.
366
+ */
367
+ private resolve;
368
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxFieldRoot, never>;
369
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxFieldRoot, "[rdxFieldRoot]", ["rdxFieldRoot"], { "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "filled": { "alias": "filled"; "required": false; "isSignal": true; }; "focused": { "alias": "focused"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
370
+ }
371
+
372
+ export { RdxFieldControl, RdxFieldDescription, RdxFieldError, RdxFieldLabel, RdxFieldRoot, injectFieldRootContext, provideFieldRootContext };
373
+ export type { RdxFieldRootContext, RdxFieldState };
@@ -0,0 +1,48 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { BooleanInput } from '@radix-ng/primitives/core';
3
+
4
+ /**
5
+ * Labels the fieldset.
6
+ *
7
+ * @group Components
8
+ */
9
+ declare class RdxFieldsetLegend {
10
+ protected readonly rootContext: {
11
+ disabledState: _angular_core.Signal<boolean>;
12
+ };
13
+ protected readonly dataAttr: (value: boolean) => "" | undefined;
14
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxFieldsetLegend, never>;
15
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxFieldsetLegend, "legend[rdxFieldsetLegend]", ["rdxFieldsetLegend"], {}, {}, never, never, true, never>;
16
+ }
17
+
18
+ declare const fieldsetRootContext: () => {
19
+ disabledState: _angular_core.Signal<boolean>;
20
+ };
21
+ type RdxFieldsetRootContext = ReturnType<typeof fieldsetRootContext>;
22
+ declare const injectFieldsetRootContext: (optional?: boolean) => {
23
+ disabledState: _angular_core.Signal<boolean>;
24
+ } | null;
25
+ declare const provideFieldsetRootContext: (useFactory: () => {
26
+ disabledState: _angular_core.Signal<boolean>;
27
+ }) => _angular_core.Provider;
28
+ /**
29
+ * Groups related form controls and disables them as a set.
30
+ *
31
+ * @group Components
32
+ */
33
+ declare class RdxFieldsetRoot {
34
+ /**
35
+ * Whether all controls in the fieldset are disabled.
36
+ *
37
+ * @group Props
38
+ * @defaultValue false
39
+ */
40
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
41
+ readonly disabledState: _angular_core.Signal<boolean>;
42
+ protected readonly dataAttr: (value: boolean) => "" | undefined;
43
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxFieldsetRoot, never>;
44
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxFieldsetRoot, "fieldset[rdxFieldsetRoot]", ["rdxFieldsetRoot"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
45
+ }
46
+
47
+ export { RdxFieldsetLegend, RdxFieldsetRoot, injectFieldsetRootContext, provideFieldsetRootContext };
48
+ export type { RdxFieldsetRootContext };
@@ -1,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { WritableSignal, Signal } from '@angular/core';
3
- import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { WritableSignal, Signal, InjectionToken, Provider } from '@angular/core';
3
+ import { BooleanInput } from '@radix-ng/primitives/core';
4
4
 
5
5
  interface FocusScopeAPI {
6
6
  paused: WritableSignal<boolean>;
@@ -21,6 +21,7 @@ declare class RdxFocusScope {
21
21
  private readonly injector;
22
22
  private readonly destroyRef;
23
23
  private readonly elementRef;
24
+ private readonly config;
24
25
  /**
25
26
  * When `true`, tabbing from last item will focus first tabbable
26
27
  * and shift+tab from first item will focus last tababble.
@@ -36,7 +37,8 @@ declare class RdxFocusScope {
36
37
  * @group Props
37
38
  * @defaultValue false
38
39
  */
39
- readonly trapped: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
40
+ readonly trapped: _angular_core.InputSignalWithTransform<boolean | undefined, BooleanInput>;
41
+ readonly isTrapped: Signal<boolean>;
40
42
  /**
41
43
  * Event handler called when auto-focusing on mount.
42
44
  * Can be prevented.
@@ -61,5 +63,11 @@ declare class RdxFocusScope {
61
63
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxFocusScope, "[rdxFocusScope]", never, { "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "trapped": { "alias": "trapped"; "required": false; "isSignal": true; }; }, { "mountAutoFocus": "mountAutoFocus"; "unmountAutoFocus": "unmountAutoFocus"; }, never, never, true, never>;
62
64
  }
63
65
 
64
- export { RdxFocusScope, injectFocusScopeContext, provideFocusScopeContext };
65
- export type { FocusScopeContext };
66
+ type RdxFocusScopeConfig = {
67
+ trapped: Signal<boolean>;
68
+ };
69
+ declare const RdxFocusScopeConfigToken: InjectionToken<RdxFocusScopeConfig>;
70
+ declare function provideRdxFocusScopeConfig(factory: () => RdxFocusScopeConfig): Provider;
71
+
72
+ export { RdxFocusScope, RdxFocusScopeConfigToken, injectFocusScopeContext, provideFocusScopeContext, provideRdxFocusScopeConfig };
73
+ export type { FocusScopeContext, RdxFocusScopeConfig };
@@ -0,0 +1,87 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { RdxFormValueControl, BooleanInput } from '@radix-ng/primitives/core';
3
+
4
+ type RdxInputValue = string | number | readonly string[];
5
+ interface RdxInputValueChangeEventDetails {
6
+ event: Event;
7
+ cancel: () => void;
8
+ isCanceled: () => boolean;
9
+ }
10
+ interface RdxInputValueChangeEvent {
11
+ value: string;
12
+ eventDetails: RdxInputValueChangeEventDetails;
13
+ }
14
+ /**
15
+ * A headless text input that can integrate with Field for accessible labeling,
16
+ * descriptions, validation state, and data attributes.
17
+ *
18
+ * @group Components
19
+ */
20
+ declare class RdxInputDirective implements RdxFormValueControl<RdxInputValue | undefined> {
21
+ private readonly element;
22
+ private readonly fieldRootContext;
23
+ private initialValue;
24
+ private defaultValueApplied;
25
+ private readonly filledValue;
26
+ private readonly focusedValue;
27
+ /**
28
+ * The input id. Field labels and descriptions use this value for accessible relationships.
29
+ *
30
+ * @group Props
31
+ */
32
+ readonly id: _angular_core.InputSignal<string>;
33
+ /**
34
+ * The controlled input value.
35
+ *
36
+ * @group Props
37
+ */
38
+ readonly value: _angular_core.ModelSignal<RdxInputValue | undefined>;
39
+ /**
40
+ * The initial value when the input is uncontrolled.
41
+ *
42
+ * @group Props
43
+ */
44
+ readonly defaultValue: _angular_core.InputSignal<RdxInputValue | undefined>;
45
+ /**
46
+ * Whether the input is disabled.
47
+ *
48
+ * @group Props
49
+ */
50
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
51
+ /**
52
+ * Whether the input is required.
53
+ *
54
+ * @group Props
55
+ */
56
+ readonly required: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
57
+ /**
58
+ * Whether the input is invalid.
59
+ *
60
+ * @group Props
61
+ */
62
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
63
+ /**
64
+ * Emits when the input value changes.
65
+ *
66
+ * @group Emits
67
+ */
68
+ readonly onValueChange: _angular_core.OutputEmitterRef<RdxInputValueChangeEvent>;
69
+ protected readonly invalidState: _angular_core.Signal<boolean>;
70
+ protected readonly disabledState: _angular_core.Signal<boolean>;
71
+ protected readonly requiredState: _angular_core.Signal<boolean>;
72
+ protected readonly filledState: _angular_core.Signal<boolean>;
73
+ protected readonly focusedState: _angular_core.Signal<boolean>;
74
+ protected readonly describedBy: _angular_core.Signal<string | undefined>;
75
+ constructor();
76
+ onFocus(): void;
77
+ onBlur(): void;
78
+ onInput(event: Event): void;
79
+ syncFieldState(): void;
80
+ private writeValue;
81
+ protected readonly dataAttr: (value: boolean) => "" | undefined;
82
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxInputDirective, never>;
83
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxInputDirective, "input[rdxInput]", ["rdxInput"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; }, never, never, true, never>;
84
+ }
85
+
86
+ export { RdxInputDirective };
87
+ export type { RdxInputValue, RdxInputValueChangeEvent, RdxInputValueChangeEventDetails };
@@ -15,7 +15,6 @@ declare class RdxLabelDirective {
15
15
  * @defaultValue false
16
16
  */
17
17
  readonly htmlFor: _angular_core.InputSignal<string | undefined>;
18
- protected readonly elementId: _angular_core.Signal<string | null>;
19
18
  /**
20
19
  * @ignore
21
20
  */