@ngrok/mantle 0.73.1 → 0.73.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion.d.ts +1 -1
- package/dist/agent.json +1 -1
- package/dist/alert-dialog.d.ts +8 -8
- package/dist/alert.d.ts +3 -3
- package/dist/anchor.d.ts +1 -1
- package/dist/{as-child-C2PttRwz.d.ts → as-child-CpZKMqTE.d.ts} +1 -1
- package/dist/badge.d.ts +2 -2
- package/dist/{button-CoGmk7_d.d.ts → button-DbHFERMB.d.ts} +6 -6
- package/dist/button.d.ts +3 -3
- package/dist/card.d.ts +1 -1
- package/dist/checkbox.d.ts +1 -1
- package/dist/code-block.d.ts +3 -3
- package/dist/code-block_highlight-utils.d.ts +1 -1
- package/dist/code.d.ts +1 -1
- package/dist/color.d.ts +1 -1
- package/dist/combobox.d.ts +2 -2
- package/dist/command.d.ts +4 -4
- package/dist/data-table.d.ts +3 -3
- package/dist/{deep-non-nullable-CT7hWCFG.d.ts → deep-non-nullable-Xu7ckQM6.d.ts} +1 -1
- package/dist/description-list.d.ts +1 -1
- package/dist/dialog.d.ts +2 -2
- package/dist/{direction-CVntIxOS.d.ts → direction-D9IZ1wW6.d.ts} +1 -1
- package/dist/{dropdown-menu-DVvNlA72.d.ts → dropdown-menu-CvOiQUSZ.d.ts} +2 -2
- package/dist/dropdown-menu.d.ts +1 -1
- package/dist/empty.d.ts +2 -2
- package/dist/field-context-B7Z1cmZW.js +2 -0
- package/dist/field-context-B7Z1cmZW.js.map +1 -0
- package/dist/field.d.ts +161 -68
- package/dist/field.js +1 -1
- package/dist/field.js.map +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +1 -1
- package/dist/{icon-D_BMDi_q.d.ts → icon-BJ7q2RXZ.d.ts} +2 -2
- package/dist/{icon-button-Dty-yfE2.d.ts → icon-button-BDTb-lxs.d.ts} +3 -3
- package/dist/icon.d.ts +3 -3
- package/dist/icons.d.ts +3 -3
- package/dist/{in-view-DdIrfU4u.d.ts → in-view-BUgyu-Tk.d.ts} +1 -1
- package/dist/{in-view-BLZVEGFC.js → in-view-CeVqeGbv.js} +1 -1
- package/dist/{in-view-BLZVEGFC.js.map → in-view-CeVqeGbv.js.map} +1 -1
- package/dist/{index-TI92Xpg5.d.ts → index-BbZBDzPh.d.ts} +1 -1
- package/dist/{index-j46YISoN.d.ts → index-BhlxYL_y.d.ts} +1 -1
- package/dist/{index-DIBURJqf.d.ts → index-CWXKBva-.d.ts} +3 -3
- package/dist/{index-CVk4t5hk.d.ts → index-DS_4n2eb.d.ts} +1 -1
- package/dist/input.d.ts +4 -4
- package/dist/input.js +1 -1
- package/dist/{is-input-CEEoHxXN.js → is-input-CtUHJGgL.js} +1 -1
- package/dist/{is-input-CEEoHxXN.js.map → is-input-CtUHJGgL.js.map} +1 -1
- package/dist/llms.txt +1 -1
- package/dist/media-object.d.ts +1 -1
- package/dist/multi-select.d.ts +2 -2
- package/dist/multi-select.js +1 -1
- package/dist/multi-select.js.map +1 -1
- package/dist/otp-input.d.ts +2 -2
- package/dist/otp-input.js +1 -1
- package/dist/otp-input.js.map +1 -1
- package/dist/pagination.d.ts +3 -3
- package/dist/pagination.js +1 -1
- package/dist/{primitive-Ed9cel2r.d.ts → primitive-qkxTYBUY.d.ts} +1 -1
- package/dist/radio-group.d.ts +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/{resolve-pre-rendered-props-DxvamgE6.d.ts → resolve-pre-rendered-props-BONSCwYA.d.ts} +1 -1
- package/dist/sandboxed-on-click.d.ts +1 -1
- package/dist/select-B7orOUPj.js +2 -0
- package/dist/select-B7orOUPj.js.map +1 -0
- package/dist/{select-8ymlL8kC.d.ts → select-SZFFzYs0.d.ts} +3 -3
- package/dist/select.d.ts +1 -1
- package/dist/select.js +1 -1
- package/dist/separator.d.ts +1 -1
- package/dist/sheet.d.ts +2 -2
- package/dist/slider.d.ts +17 -0
- package/dist/slider.js +1 -1
- package/dist/slider.js.map +1 -1
- package/dist/slot.d.ts +1 -1
- package/dist/split-button.d.ts +3 -3
- package/dist/{svg-only-CLbMy439.d.ts → svg-only-D4uqM1OC.d.ts} +2 -2
- package/dist/switch.d.ts +1 -1
- package/dist/{table-BWxS7pXj.d.ts → table-CjSQkfZe.d.ts} +1 -1
- package/dist/table.d.ts +1 -1
- package/dist/tabs.js +1 -1
- package/dist/text-area.d.ts +1 -1
- package/dist/theme.d.ts +1 -1
- package/dist/{themes-f2W5S6xS.d.ts → themes-FPux5kIu.d.ts} +1 -1
- package/dist/toast.d.ts +3 -3
- package/dist/{types-DnghL1WE.d.ts → types-QKZ5fvaQ.d.ts} +1 -1
- package/dist/types.d.ts +5 -5
- package/dist/{use-prefers-reduced-motion-YUurmkwx.js → use-prefers-reduced-motion-Bpx8G3UT.js} +1 -1
- package/dist/{use-prefers-reduced-motion-YUurmkwx.js.map → use-prefers-reduced-motion-Bpx8G3UT.js.map} +1 -1
- package/dist/utils.d.ts +2 -2
- package/dist/utils.js +1 -1
- package/dist/{validation-DF1z7YDr.d.ts → validation-CBSOmooP.d.ts} +1 -1
- package/dist/{variant-props-B4io4uA_.d.ts → variant-props-BZbM__kQ.d.ts} +2 -2
- package/dist/{with-style-props-CW8buMhK.d.ts → with-style-props-xzZLnIrF.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/select-BBB_e15a.js +0 -2
- package/dist/select-BBB_e15a.js.map +0 -1
package/dist/field.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { t as WithAsChild } from "./as-child-
|
|
2
|
-
import { n as IconButtonProps } from "./icon-button-
|
|
3
|
-
import { a as ValidationState, c as parseValidation, i as ValidationProp, l as resolveValidation, n as ParsedValidation, o as WithValidation, r as Validation, s as isAriaInvalid, t as AriaInvalid } from "./validation-
|
|
4
|
-
import { t as Slot } from "./index-
|
|
1
|
+
import { t as WithAsChild } from "./as-child-CpZKMqTE.js";
|
|
2
|
+
import { n as IconButtonProps } from "./icon-button-BDTb-lxs.js";
|
|
3
|
+
import { a as ValidationState, c as parseValidation, i as ValidationProp, l as resolveValidation, n as ParsedValidation, o as WithValidation, r as Validation, s as isAriaInvalid, t as AriaInvalid } from "./validation-CBSOmooP.js";
|
|
4
|
+
import { t as Slot } from "./index-BhlxYL_y.js";
|
|
5
5
|
import * as _$react from "react";
|
|
6
6
|
import { ComponentProps, ReactElement, ReactNode } from "react";
|
|
7
7
|
import * as _$_radix_ui_react_popover0 from "@radix-ui/react-popover";
|
|
8
8
|
|
|
9
9
|
//#region src/components/field/field-context.d.ts
|
|
10
10
|
/**
|
|
11
|
-
* ARIA props that `Field.Control` applies to the field's
|
|
11
|
+
* ARIA and identity props that `Field.Control` applies to the field's
|
|
12
|
+
* focusable control. `id` and `name` come from the surrounding `Field.Item`
|
|
13
|
+
* so a caller only needs to declare `name` once.
|
|
12
14
|
*/
|
|
13
15
|
type FieldControlAriaProps = {
|
|
14
16
|
/**
|
|
@@ -23,6 +25,15 @@ type FieldControlAriaProps = {
|
|
|
23
25
|
* The resolved ARIA invalid state for the focusable control.
|
|
24
26
|
*/
|
|
25
27
|
"aria-invalid"?: ComponentProps<"input">["aria-invalid"];
|
|
28
|
+
/**
|
|
29
|
+
* Stable DOM id for the focusable control, generated by `Field.Item` and
|
|
30
|
+
* also used as `Field.Label`'s default `htmlFor`.
|
|
31
|
+
*/
|
|
32
|
+
id?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Form value identity from `Field.Item`'s required `name` prop.
|
|
35
|
+
*/
|
|
36
|
+
name?: string;
|
|
26
37
|
};
|
|
27
38
|
/**
|
|
28
39
|
* Context value owned by `Field.Item` and consumed by message/control parts.
|
|
@@ -46,16 +57,56 @@ type FieldErrorMessage = string | null | undefined | false;
|
|
|
46
57
|
//#endregion
|
|
47
58
|
//#region src/components/field/field.d.ts
|
|
48
59
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
60
|
+
* A single form field — `Label`, a control (`Input`, `Select`, `Checkbox`,
|
|
61
|
+
* etc.), and any `Field.Description`, `Field.Errors`, or `Field.ErrorList` siblings stacked
|
|
62
|
+
* vertically with a consistent `gap-1.5` so help and error messaging sit
|
|
63
|
+
* tightly under the input.
|
|
64
|
+
*
|
|
65
|
+
* Renders a plain `<div>` — the `<label htmlFor>` ↔ control association
|
|
66
|
+
* already provides the right semantics for a single field, so no implicit
|
|
67
|
+
* `role` is added. `Field.Item` owns the contextual description/error IDs
|
|
68
|
+
* that `Field.Control` applies to the focusable control. Rendered errors
|
|
69
|
+
* infer an `"error"` validation state unless `validation` is supplied as an
|
|
70
|
+
* explicit override.
|
|
71
|
+
*
|
|
72
|
+
* **Single-slot constraint.** A `Field.Item` owns one description ID and one
|
|
73
|
+
* errors ID, so render at most one `Field.Description` and one
|
|
74
|
+
* `Field.Errors` *or* `Field.ErrorList` (not both) per item. A second instance
|
|
75
|
+
* would duplicate the slot `id` in the DOM. Pass multiple messages to
|
|
76
|
+
* `Field.Errors`, or multiple `Field.ErrorItem` children to `Field.ErrorList`,
|
|
77
|
+
* instead.
|
|
78
|
+
*
|
|
79
|
+
* @see https://mantle.ngrok.com/components/field
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```tsx
|
|
83
|
+
* <Field.Group>
|
|
84
|
+
* <Field.Item name="apiKey">
|
|
85
|
+
* <Field.LabelRow>
|
|
86
|
+
* <Field.Label>
|
|
87
|
+
* API key <Field.Optional />
|
|
88
|
+
* </Field.Label>
|
|
89
|
+
* <Field.Help>
|
|
90
|
+
* <Field.HelpTrigger label="What is an API key?" />
|
|
91
|
+
* <Field.HelpContent>Copy this from the dashboard.</Field.HelpContent>
|
|
92
|
+
* </Field.Help>
|
|
93
|
+
* </Field.LabelRow>
|
|
94
|
+
* <Field.Control>
|
|
95
|
+
* <Input />
|
|
96
|
+
* </Field.Control>
|
|
97
|
+
* <Field.Errors messages={["API key is required."]} />
|
|
98
|
+
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
99
|
+
* </Field.Item>
|
|
100
|
+
* </Field.Group>
|
|
101
|
+
* ```
|
|
52
102
|
*/
|
|
53
|
-
type
|
|
103
|
+
type FieldItemProps = ComponentProps<"div"> & WithAsChild & WithValidation & {
|
|
54
104
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
105
|
+
* Form-value name for the field. Required so `Field.Control` can splat
|
|
106
|
+
* it onto the focusable child while `Field.Item` owns the stable
|
|
107
|
+
* generated control id used by `Field.Label`'s `htmlFor`.
|
|
57
108
|
*/
|
|
58
|
-
|
|
109
|
+
name: string;
|
|
59
110
|
};
|
|
60
111
|
type FieldControlSlotProps = Omit<ComponentProps<typeof Slot>, "aria-describedby" | "aria-errormessage" | "aria-invalid" | "children">;
|
|
61
112
|
/**
|
|
@@ -63,7 +114,7 @@ type FieldControlSlotProps = Omit<ComponentProps<typeof Slot>, "aria-describedby
|
|
|
63
114
|
* any HTML/Slot props and a forwarded ref — those land on the single child
|
|
64
115
|
* element along with the generated ARIA props.
|
|
65
116
|
*/
|
|
66
|
-
type FieldControlElementProps = FieldControlSlotProps &
|
|
117
|
+
type FieldControlElementProps = FieldControlSlotProps & {
|
|
67
118
|
/**
|
|
68
119
|
* A single control element to receive the field ARIA props.
|
|
69
120
|
*/
|
|
@@ -76,7 +127,7 @@ type FieldControlElementProps = FieldControlSlotProps & WithValidation & {
|
|
|
76
127
|
* Slot props are marked `never` so passing e.g. `className` alongside a
|
|
77
128
|
* render-prop child is a type error rather than a silently ignored prop.
|
|
78
129
|
*/
|
|
79
|
-
type FieldControlRenderProps =
|
|
130
|
+
type FieldControlRenderProps = {
|
|
80
131
|
/**
|
|
81
132
|
* A render function that places the field ARIA props onto a control of
|
|
82
133
|
* the caller's choosing. Used for compound controls or wrappers where
|
|
@@ -84,6 +135,18 @@ type FieldControlRenderProps = WithValidation & {
|
|
|
84
135
|
*/
|
|
85
136
|
children: (props: FieldControlAriaProps) => ReactNode;
|
|
86
137
|
} & { [K in keyof FieldControlSlotProps]?: never };
|
|
138
|
+
/**
|
|
139
|
+
* Props for the `Field.Errors` convenience renderer. It owns its generated
|
|
140
|
+
* children, so use `Field.ErrorList` / `Field.ErrorItem` directly when custom
|
|
141
|
+
* list contents or polymorphic list markup are needed.
|
|
142
|
+
*/
|
|
143
|
+
type FieldErrorsProps = Omit<ComponentProps<"ul">, "children" | "id"> & {
|
|
144
|
+
/**
|
|
145
|
+
* Validation messages to render. Strings are trimmed, and empty, nullish,
|
|
146
|
+
* or false values are ignored before rendering the list.
|
|
147
|
+
*/
|
|
148
|
+
messages?: readonly FieldErrorMessage[];
|
|
149
|
+
};
|
|
87
150
|
/**
|
|
88
151
|
* Compound component for semantic, accessible form fields. Composes a
|
|
89
152
|
* `Field.Label`, control (`Input`, `Select`, etc.), `Field.Description`, and
|
|
@@ -100,7 +163,7 @@ type FieldControlRenderProps = WithValidation & {
|
|
|
100
163
|
* Field.Group
|
|
101
164
|
* └── Field.Item
|
|
102
165
|
* ├── Field.LabelRow
|
|
103
|
-
* │ ├── Field.Label
|
|
166
|
+
* │ ├── Field.Label (or Field.LabelText for control-less rows)
|
|
104
167
|
* │ │ └── Field.Optional
|
|
105
168
|
* │ └── Field.Help
|
|
106
169
|
* │ ├── Field.HelpTrigger
|
|
@@ -116,9 +179,9 @@ type FieldControlRenderProps = WithValidation & {
|
|
|
116
179
|
* @example
|
|
117
180
|
* ```tsx
|
|
118
181
|
* <Field.Group>
|
|
119
|
-
* <Field.Item>
|
|
182
|
+
* <Field.Item name="apiKey">
|
|
120
183
|
* <Field.LabelRow>
|
|
121
|
-
* <Field.Label
|
|
184
|
+
* <Field.Label>
|
|
122
185
|
* API key <Field.Optional />
|
|
123
186
|
* </Field.Label>
|
|
124
187
|
* <Field.Help>
|
|
@@ -127,7 +190,7 @@ type FieldControlRenderProps = WithValidation & {
|
|
|
127
190
|
* </Field.Help>
|
|
128
191
|
* </Field.LabelRow>
|
|
129
192
|
* <Field.Control>
|
|
130
|
-
* <Input
|
|
193
|
+
* <Input />
|
|
131
194
|
* </Field.Control>
|
|
132
195
|
* <Field.Errors messages={["API key is required."]} />
|
|
133
196
|
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
@@ -145,9 +208,9 @@ declare const Field: {
|
|
|
145
208
|
* @example
|
|
146
209
|
* ```tsx
|
|
147
210
|
* <Field.Group>
|
|
148
|
-
* <Field.Item>
|
|
211
|
+
* <Field.Item name="apiKey">
|
|
149
212
|
* <Field.LabelRow>
|
|
150
|
-
* <Field.Label
|
|
213
|
+
* <Field.Label>
|
|
151
214
|
* API key <Field.Optional />
|
|
152
215
|
* </Field.Label>
|
|
153
216
|
* <Field.Help>
|
|
@@ -156,7 +219,7 @@ declare const Field: {
|
|
|
156
219
|
* </Field.Help>
|
|
157
220
|
* </Field.LabelRow>
|
|
158
221
|
* <Field.Control>
|
|
159
|
-
* <Input
|
|
222
|
+
* <Input />
|
|
160
223
|
* </Field.Control>
|
|
161
224
|
* <Field.Errors messages={["API key is required."]} />
|
|
162
225
|
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
@@ -164,7 +227,7 @@ declare const Field: {
|
|
|
164
227
|
* </Field.Group>
|
|
165
228
|
* ```
|
|
166
229
|
*/
|
|
167
|
-
readonly Item: _$react.ForwardRefExoticComponent<Omit<
|
|
230
|
+
readonly Item: _$react.ForwardRefExoticComponent<Omit<FieldItemProps, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
|
|
168
231
|
/**
|
|
169
232
|
* Applies generated field ARIA props and validation state to a single
|
|
170
233
|
* focusable control. Accepts either a single React element child (cloned
|
|
@@ -177,11 +240,11 @@ declare const Field: {
|
|
|
177
240
|
*
|
|
178
241
|
* @example
|
|
179
242
|
* ```tsx
|
|
180
|
-
* // Element child — Slot
|
|
181
|
-
* <Field.Item>
|
|
182
|
-
* <Field.Label
|
|
243
|
+
* // Element child — Slot splats id, name, and ARIA props onto <Input/>.
|
|
244
|
+
* <Field.Item name="apiKey">
|
|
245
|
+
* <Field.Label>API key</Field.Label>
|
|
183
246
|
* <Field.Control>
|
|
184
|
-
* <Input
|
|
247
|
+
* <Input />
|
|
185
248
|
* </Field.Control>
|
|
186
249
|
* <Field.Errors messages={["API key is required."]} />
|
|
187
250
|
* </Field.Item>
|
|
@@ -189,14 +252,14 @@ declare const Field: {
|
|
|
189
252
|
*
|
|
190
253
|
* @example
|
|
191
254
|
* ```tsx
|
|
192
|
-
* // Render-prop child — caller spreads the
|
|
193
|
-
* //
|
|
194
|
-
* <Field.Item>
|
|
255
|
+
* // Render-prop child — caller spreads the props onto an inner element
|
|
256
|
+
* // when the focusable target is nested (e.g. inside a <label>).
|
|
257
|
+
* <Field.Item name="acceptTerms">
|
|
195
258
|
* <Field.Control>
|
|
196
|
-
* {(
|
|
259
|
+
* {(controlProps) => (
|
|
197
260
|
* <label>
|
|
198
261
|
* Accept terms
|
|
199
|
-
* <input type="checkbox" {...
|
|
262
|
+
* <input type="checkbox" {...controlProps} />
|
|
200
263
|
* </label>
|
|
201
264
|
* )}
|
|
202
265
|
* </Field.Control>
|
|
@@ -213,9 +276,9 @@ declare const Field: {
|
|
|
213
276
|
* @example
|
|
214
277
|
* ```tsx
|
|
215
278
|
* <Field.Group>
|
|
216
|
-
* <Field.Item>
|
|
279
|
+
* <Field.Item name="apiKey">
|
|
217
280
|
* <Field.LabelRow>
|
|
218
|
-
* <Field.Label
|
|
281
|
+
* <Field.Label>
|
|
219
282
|
* API key <Field.Optional />
|
|
220
283
|
* </Field.Label>
|
|
221
284
|
* <Field.Help>
|
|
@@ -224,7 +287,7 @@ declare const Field: {
|
|
|
224
287
|
* </Field.Help>
|
|
225
288
|
* </Field.LabelRow>
|
|
226
289
|
* <Field.Control>
|
|
227
|
-
* <Input
|
|
290
|
+
* <Input />
|
|
228
291
|
* </Field.Control>
|
|
229
292
|
* <Field.Errors messages={["API key is required."]} />
|
|
230
293
|
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
@@ -269,16 +332,23 @@ declare const Field: {
|
|
|
269
332
|
*/
|
|
270
333
|
readonly Legend: _$react.ForwardRefExoticComponent<Omit<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLLegendElement>, HTMLLegendElement>, "ref"> & _$react.RefAttributes<HTMLLegendElement>>;
|
|
271
334
|
/**
|
|
272
|
-
* The Mantle `Label`, exposed on `Field` for field composition.
|
|
335
|
+
* The Mantle `Label`, exposed on `Field` for field composition. Inside a
|
|
336
|
+
* `Field.Item`, `htmlFor` defaults to the same stable id that `Field.Control`
|
|
337
|
+
* splats onto its focusable child — so the label-to-control association is
|
|
338
|
+
* automatic from `Field.Item`'s required `name` and you don't need to thread
|
|
339
|
+
* a matching `htmlFor` / `id` pair by hand. Pass an explicit `htmlFor` to
|
|
340
|
+
* opt out (e.g. when the focusable element is rendered outside of
|
|
341
|
+
* `Field.Control`).
|
|
273
342
|
*
|
|
274
343
|
* @see https://mantle.ngrok.com/components/label
|
|
275
344
|
*
|
|
276
345
|
* @example
|
|
277
346
|
* ```tsx
|
|
347
|
+
* // htmlFor is wired automatically from Field.Item's name.
|
|
278
348
|
* <Field.Group>
|
|
279
|
-
* <Field.Item>
|
|
349
|
+
* <Field.Item name="apiKey">
|
|
280
350
|
* <Field.LabelRow>
|
|
281
|
-
* <Field.Label
|
|
351
|
+
* <Field.Label>
|
|
282
352
|
* API key <Field.Optional />
|
|
283
353
|
* </Field.Label>
|
|
284
354
|
* <Field.Help>
|
|
@@ -287,7 +357,7 @@ declare const Field: {
|
|
|
287
357
|
* </Field.Help>
|
|
288
358
|
* </Field.LabelRow>
|
|
289
359
|
* <Field.Control>
|
|
290
|
-
* <Input
|
|
360
|
+
* <Input />
|
|
291
361
|
* </Field.Control>
|
|
292
362
|
* <Field.Errors messages={["API key is required."]} />
|
|
293
363
|
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
@@ -295,9 +365,31 @@ declare const Field: {
|
|
|
295
365
|
* </Field.Group>
|
|
296
366
|
* ```
|
|
297
367
|
*/
|
|
298
|
-
readonly Label: _$react.ForwardRefExoticComponent<Omit<_$react.DetailedHTMLProps<_$react.LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "ref"> & {
|
|
368
|
+
readonly Label: _$react.ForwardRefExoticComponent<Omit<Omit<_$react.DetailedHTMLProps<_$react.LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "ref"> & {
|
|
299
369
|
disabled?: boolean;
|
|
300
|
-
} & _$react.RefAttributes<HTMLLabelElement>>;
|
|
370
|
+
} & _$react.RefAttributes<HTMLLabelElement>, "ref"> & _$react.RefAttributes<HTMLLabelElement>>;
|
|
371
|
+
/**
|
|
372
|
+
* Static, label-styled text for a `Field.Item` row that has no focusable
|
|
373
|
+
* control to caption. Renders a `<p>` with the same typography as
|
|
374
|
+
* `Field.Label`, so a read-only row composes cleanly alongside real form
|
|
375
|
+
* fields without misrepresenting itself as a control caption.
|
|
376
|
+
*
|
|
377
|
+
* Use for derived / system-managed values (owner, created-at, computed
|
|
378
|
+
* status) inside sheets or detail panels. For rows with a real control,
|
|
379
|
+
* use `Field.Label` instead so the label-to-control association is wired.
|
|
380
|
+
*
|
|
381
|
+
* @see https://mantle.ngrok.com/components/field
|
|
382
|
+
*
|
|
383
|
+
* @example
|
|
384
|
+
* ```tsx
|
|
385
|
+
* <Field.Item name="owner">
|
|
386
|
+
* <Field.LabelText>Owner</Field.LabelText>
|
|
387
|
+
* <CredentialOwnerCard owner={owner} />
|
|
388
|
+
* <Field.Description>The user or service user that owns this API key.</Field.Description>
|
|
389
|
+
* </Field.Item>
|
|
390
|
+
* ```
|
|
391
|
+
*/
|
|
392
|
+
readonly LabelText: _$react.ForwardRefExoticComponent<Omit<_$react.ClassAttributes<HTMLParagraphElement> & _$react.HTMLAttributes<HTMLParagraphElement> & WithAsChild, "ref"> & _$react.RefAttributes<HTMLParagraphElement>>;
|
|
301
393
|
/**
|
|
302
394
|
* Horizontal layout container for the label area of a field. Aligns a
|
|
303
395
|
* `<Field.Label>` (which may contain `Field.Optional`) with adjacent affordances
|
|
@@ -308,9 +400,9 @@ declare const Field: {
|
|
|
308
400
|
* @example
|
|
309
401
|
* ```tsx
|
|
310
402
|
* <Field.Group>
|
|
311
|
-
* <Field.Item>
|
|
403
|
+
* <Field.Item name="apiKey">
|
|
312
404
|
* <Field.LabelRow>
|
|
313
|
-
* <Field.Label
|
|
405
|
+
* <Field.Label>
|
|
314
406
|
* API key <Field.Optional />
|
|
315
407
|
* </Field.Label>
|
|
316
408
|
* <Field.Help>
|
|
@@ -319,7 +411,7 @@ declare const Field: {
|
|
|
319
411
|
* </Field.Help>
|
|
320
412
|
* </Field.LabelRow>
|
|
321
413
|
* <Field.Control>
|
|
322
|
-
* <Input
|
|
414
|
+
* <Input />
|
|
323
415
|
* </Field.Control>
|
|
324
416
|
* <Field.Errors messages={["API key is required."]} />
|
|
325
417
|
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
@@ -338,9 +430,9 @@ declare const Field: {
|
|
|
338
430
|
* @example
|
|
339
431
|
* ```tsx
|
|
340
432
|
* <Field.Group>
|
|
341
|
-
* <Field.Item>
|
|
433
|
+
* <Field.Item name="apiKey">
|
|
342
434
|
* <Field.LabelRow>
|
|
343
|
-
* <Field.Label
|
|
435
|
+
* <Field.Label>
|
|
344
436
|
* API key <Field.Optional />
|
|
345
437
|
* </Field.Label>
|
|
346
438
|
* <Field.Help>
|
|
@@ -349,7 +441,7 @@ declare const Field: {
|
|
|
349
441
|
* </Field.Help>
|
|
350
442
|
* </Field.LabelRow>
|
|
351
443
|
* <Field.Control>
|
|
352
|
-
* <Input
|
|
444
|
+
* <Input />
|
|
353
445
|
* </Field.Control>
|
|
354
446
|
* <Field.Errors messages={["API key is required."]} />
|
|
355
447
|
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
@@ -368,9 +460,9 @@ declare const Field: {
|
|
|
368
460
|
* @example
|
|
369
461
|
* ```tsx
|
|
370
462
|
* <Field.Group>
|
|
371
|
-
* <Field.Item>
|
|
463
|
+
* <Field.Item name="apiKey">
|
|
372
464
|
* <Field.LabelRow>
|
|
373
|
-
* <Field.Label
|
|
465
|
+
* <Field.Label>
|
|
374
466
|
* API key <Field.Optional />
|
|
375
467
|
* </Field.Label>
|
|
376
468
|
* <Field.Help>
|
|
@@ -379,7 +471,7 @@ declare const Field: {
|
|
|
379
471
|
* </Field.Help>
|
|
380
472
|
* </Field.LabelRow>
|
|
381
473
|
* <Field.Control>
|
|
382
|
-
* <Input
|
|
474
|
+
* <Input />
|
|
383
475
|
* </Field.Control>
|
|
384
476
|
* <Field.Errors messages={["API key is required."]} />
|
|
385
477
|
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
@@ -404,9 +496,9 @@ declare const Field: {
|
|
|
404
496
|
* @example
|
|
405
497
|
* ```tsx
|
|
406
498
|
* <Field.Group>
|
|
407
|
-
* <Field.Item>
|
|
499
|
+
* <Field.Item name="apiKey">
|
|
408
500
|
* <Field.LabelRow>
|
|
409
|
-
* <Field.Label
|
|
501
|
+
* <Field.Label>
|
|
410
502
|
* API key <Field.Optional />
|
|
411
503
|
* </Field.Label>
|
|
412
504
|
* <Field.Help>
|
|
@@ -415,7 +507,7 @@ declare const Field: {
|
|
|
415
507
|
* </Field.Help>
|
|
416
508
|
* </Field.LabelRow>
|
|
417
509
|
* <Field.Control>
|
|
418
|
-
* <Input
|
|
510
|
+
* <Input />
|
|
419
511
|
* </Field.Control>
|
|
420
512
|
* <Field.Errors messages={["API key is required."]} />
|
|
421
513
|
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
@@ -437,9 +529,9 @@ declare const Field: {
|
|
|
437
529
|
* @example
|
|
438
530
|
* ```tsx
|
|
439
531
|
* <Field.Group>
|
|
440
|
-
* <Field.Item>
|
|
532
|
+
* <Field.Item name="apiKey">
|
|
441
533
|
* <Field.LabelRow>
|
|
442
|
-
* <Field.Label
|
|
534
|
+
* <Field.Label>
|
|
443
535
|
* API key <Field.Optional />
|
|
444
536
|
* </Field.Label>
|
|
445
537
|
* <Field.Help>
|
|
@@ -448,7 +540,7 @@ declare const Field: {
|
|
|
448
540
|
* </Field.Help>
|
|
449
541
|
* </Field.LabelRow>
|
|
450
542
|
* <Field.Control>
|
|
451
|
-
* <Input
|
|
543
|
+
* <Input />
|
|
452
544
|
* </Field.Control>
|
|
453
545
|
* <Field.Errors messages={["API key is required."]} />
|
|
454
546
|
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
@@ -465,9 +557,9 @@ declare const Field: {
|
|
|
465
557
|
* @example
|
|
466
558
|
* ```tsx
|
|
467
559
|
* <Field.Group>
|
|
468
|
-
* <Field.Item>
|
|
560
|
+
* <Field.Item name="apiKey">
|
|
469
561
|
* <Field.LabelRow>
|
|
470
|
-
* <Field.Label
|
|
562
|
+
* <Field.Label>
|
|
471
563
|
* API key <Field.Optional />
|
|
472
564
|
* </Field.Label>
|
|
473
565
|
* <Field.Help>
|
|
@@ -476,7 +568,7 @@ declare const Field: {
|
|
|
476
568
|
* </Field.Help>
|
|
477
569
|
* </Field.LabelRow>
|
|
478
570
|
* <Field.Control>
|
|
479
|
-
* <Input
|
|
571
|
+
* <Input />
|
|
480
572
|
* </Field.Control>
|
|
481
573
|
* <Field.Errors messages={["API key is required."]} />
|
|
482
574
|
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
@@ -495,9 +587,9 @@ declare const Field: {
|
|
|
495
587
|
* @example
|
|
496
588
|
* ```tsx
|
|
497
589
|
* <Field.Group>
|
|
498
|
-
* <Field.Item>
|
|
590
|
+
* <Field.Item name="apiKey">
|
|
499
591
|
* <Field.LabelRow>
|
|
500
|
-
* <Field.Label
|
|
592
|
+
* <Field.Label>
|
|
501
593
|
* API key <Field.Optional />
|
|
502
594
|
* </Field.Label>
|
|
503
595
|
* <Field.Help>
|
|
@@ -506,7 +598,7 @@ declare const Field: {
|
|
|
506
598
|
* </Field.Help>
|
|
507
599
|
* </Field.LabelRow>
|
|
508
600
|
* <Field.Control>
|
|
509
|
-
* <Input
|
|
601
|
+
* <Input />
|
|
510
602
|
* </Field.Control>
|
|
511
603
|
* <Field.Errors messages={["API key is required."]} />
|
|
512
604
|
* <Field.Description>You can find this in the ngrok dashboard.</Field.Description>
|
|
@@ -524,10 +616,10 @@ declare const Field: {
|
|
|
524
616
|
* @example
|
|
525
617
|
* ```tsx
|
|
526
618
|
* <Field.Group>
|
|
527
|
-
* <Field.Item>
|
|
528
|
-
* <Field.Label
|
|
619
|
+
* <Field.Item name="username">
|
|
620
|
+
* <Field.Label>Username</Field.Label>
|
|
529
621
|
* <Field.Control>
|
|
530
|
-
* <Input
|
|
622
|
+
* <Input />
|
|
531
623
|
* </Field.Control>
|
|
532
624
|
* <Field.ErrorList>
|
|
533
625
|
* <Field.ErrorItem>Must be at least 3 characters.</Field.ErrorItem>
|
|
@@ -548,10 +640,10 @@ declare const Field: {
|
|
|
548
640
|
* @example
|
|
549
641
|
* ```tsx
|
|
550
642
|
* <Field.Group>
|
|
551
|
-
* <Field.Item>
|
|
552
|
-
* <Field.Label
|
|
643
|
+
* <Field.Item name="username">
|
|
644
|
+
* <Field.Label>Username</Field.Label>
|
|
553
645
|
* <Field.Control>
|
|
554
|
-
* <Input
|
|
646
|
+
* <Input />
|
|
555
647
|
* </Field.Control>
|
|
556
648
|
* <Field.ErrorList>
|
|
557
649
|
* <Field.ErrorItem>Must be at least 3 characters.</Field.ErrorItem>
|
|
@@ -582,7 +674,8 @@ type FieldError = {
|
|
|
582
674
|
* Handles the shapes TanStack form yields for Zod, Standard Schema, and
|
|
583
675
|
* thrown `Error` validators: items may be strings, objects with `.message`,
|
|
584
676
|
* `undefined`, `null`, or `false`. Empty / whitespace-only messages are
|
|
585
|
-
* dropped so callers don't have to filter
|
|
677
|
+
* dropped and duplicate messages are collapsed so callers don't have to filter
|
|
678
|
+
* again.
|
|
586
679
|
*
|
|
587
680
|
* @example
|
|
588
681
|
* ```tsx
|
package/dist/field.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./cx-D1HYnpvA.js";import{t}from"./slot-D_ZUrdEW.js";import{t as n}from"./icon-button-ZKN0sRIJ.js";import{i as r,n as i,r as a,t as o}from"./validation-BYME8rWN.js";import{t as s}from"./use-isomorphic-layout-effect-CNSD0lhi.js";import{t as c}from"./label-x6FcOpxc.js";import{t as l}from"./popover-CoZxokw_.js";import{
|
|
1
|
+
import{t as e}from"./cx-D1HYnpvA.js";import{t}from"./slot-D_ZUrdEW.js";import{t as n}from"./icon-button-ZKN0sRIJ.js";import{i as r,n as i,r as a,t as o}from"./validation-BYME8rWN.js";import{t as s}from"./use-isomorphic-layout-effect-CNSD0lhi.js";import{t as c}from"./label-x6FcOpxc.js";import{t as l}from"./popover-CoZxokw_.js";import{n as u,r as d,t as f}from"./field-context-B7Z1cmZW.js";import{Children as p,Fragment as m,cloneElement as h,forwardRef as g,isValidElement as _,useCallback as v,useContext as y,useId as b,useMemo as x,useState as S}from"react";import C from"tiny-invariant";import{jsx as w}from"react/jsx-runtime";import{QuestionIcon as T}from"@phosphor-icons/react/Question";const E=e=>{let t=[],n=new Set;for(let r of e??[]){if(typeof r!=`string`)continue;let e=r.trim();e.length===0||n.has(e)||(n.add(e),t.push(e))}return t},D=e=>!(e==null||typeof e==`boolean`||typeof e==`string`&&e.trim().length===0),O=({children:e,errorItemType:t})=>{let n=!1;return p.forEach(e,e=>{if(!(n||e==null||typeof e==`boolean`)){if(typeof e==`string`){e.trim().length>0&&(n=!0);return}if(!_(e)){n=!0;return}if(e.type===t){n=D(e.props.children);return}if(e.type===m){n=O({children:e.props.children,errorItemType:t});return}n=!0}}),n},k=g(({className:t,...n},r)=>w(`fieldset`,{ref:r,"data-slot":`field-set`,className:e(`flex w-full min-w-0 flex-col gap-4 border-0 p-0`,t),...n}));k.displayName=`FieldSet`;const A=g(({className:t,...n},r)=>w(`legend`,{ref:r,"data-slot":`field-legend`,className:e(`text-strong mb-1.5 text-sm font-medium font-sans`,t),...n}));A.displayName=`FieldLegend`;const j=g(({htmlFor:e,...t},n)=>{let r=y(u);return w(c,{ref:n,htmlFor:e??r?.controlId,...t})});j.displayName=`FieldLabel`;const M=g(({asChild:n,className:r,...i},a)=>w(n?t:`p`,{ref:a,"data-slot":`field-label-text`,className:e(`text-strong text-sm font-medium font-sans`,r),...i}));M.displayName=`FieldLabelText`;const N=g(({asChild:n,className:r,...i},a)=>w(n?t:`div`,{ref:a,"data-slot":`field-label-row`,className:e(`flex items-center gap-1`,r),...i}));N.displayName=`FieldLabelRow`;const P=l.Root,F=g(({appearance:t=`ghost`,className:r,icon:i=w(T,{}),label:a,size:o=`xs`,type:s=`button`,...c},u)=>w(l.Trigger,{asChild:!0,children:w(n,{ref:u,appearance:t,className:e(`text-body -my-0.5`,r),icon:i,label:a,size:o,type:s,...c})}));F.displayName=`FieldHelpTrigger`;const I=g((e,t)=>w(l.Content,{ref:t,"data-slot":`field-help-content`,...e}));I.displayName=`FieldHelpContent`;const L=g(({asChild:n,children:r,className:i,...a},o)=>w(n?t:`span`,{ref:o,"data-slot":`field-optional`,className:e(`text-muted text-sm font-normal font-sans`,i),...a,children:r??`(Optional)`}));L.displayName=`FieldOptional`;const R=g(({asChild:n,className:r,...i},a)=>w(n?t:`div`,{ref:a,"data-slot":`field-group`,className:e(`flex w-full flex-col gap-4`,r),...i}));R.displayName=`FieldGroup`;const z=g(({asChild:n,children:i,className:a,name:s,validation:c,...l},d)=>{let f=n?t:`div`,p=b(),m=b(),h=b(),[g,_]=S(!1),y=r(c??(g?`error`:void 0)),C=v(()=>(_(!0),()=>{_(!1)}),[]),T=x(()=>({controlId:p,descriptionId:m,errorId:h,hasErrors:g,name:s,registerError:C,validation:y}),[p,m,h,g,s,C,y]);return w(u.Provider,{value:T,children:w(o,{validation:y,children:w(f,{ref:d,"data-slot":`field-item`,"data-validation":y,className:e(`flex w-full flex-col gap-1.5`,a),...l,children:i})})})});z.displayName=`FieldItem`;const B=g(({children:e,...n},r)=>{let i=y(u),a=d({context:i});return typeof e==`function`?w(o,{validation:a.validation,children:w(f.Provider,{value:i?a.ariaProps:null,children:e(a.ariaProps)})}):(C(_(e),`Field.Control expects a single React element child (or a render-prop function). Got a non-element value (string, array, fragment, null, or undefined). Wrap the control in a single element, or use the function child form: <Field.Control>{(props) => <YourControl {...props} />}</Field.Control>.`),w(o,{validation:a.validation,children:w(f.Provider,{value:i?a.ariaProps:null,children:w(t,{ref:r,...n,children:h(e,a.ariaProps)})})}))});B.displayName=`FieldControl`;const V=g(({asChild:n,className:r,...i},a)=>w(n?t:`p`,{ref:a,"data-slot":`field-description`,id:y(u)?.descriptionId,className:e(`text-body text-sm leading-4`,`[:where([data-slot=field-error-list]+&)]:-mt-1.5`,r),...i}));V.displayName=`FieldDescription`;const H=g(({children:t,className:n,...r},i)=>D(t)?w(`li`,{ref:i,"data-slot":`field-error`,className:e(`text-danger-600 text-sm leading-4`,n),...r,children:t}):null);H.displayName=`FieldErrorItem`;const U=g(({messages:e,...t},n)=>w(W,{ref:n,...t,children:E(e).map((e,t)=>w(H,{children:e},t))}));U.displayName=`FieldErrors`;const W=g(({asChild:n,children:r,className:i,...a},o)=>{let c=O({children:r,errorItemType:H}),l=y(u),d=l?.registerError;return s(()=>{if(!(!c||d==null))return d()},[c,d]),c?w(n?t:`ul`,{ref:o,"data-slot":`field-error-list`,id:l?.errorId,role:`list`,className:e(`m-0 flex w-full flex-col list-none p-0`,i),...a,children:r}):null});W.displayName=`FieldErrorList`;const G={Item:z,Control:B,Group:R,Set:k,Legend:A,Label:j,LabelText:M,LabelRow:N,Help:P,HelpTrigger:F,HelpContent:I,Optional:L,Description:V,Errors:U,ErrorList:W,ErrorItem:H},K=e=>E(e?.map(e=>typeof e==`string`||!e?e:e.message));export{G as Field,i as isAriaInvalid,a as parseValidation,r as resolveValidation,K as toErrorMessages};
|
|
2
2
|
//# sourceMappingURL=field.js.map
|