@ngrok/mantle 0.76.10 → 0.77.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 (67) hide show
  1. package/dist/agent.json +4 -1
  2. package/dist/alert-dialog.d.ts +16 -0
  3. package/dist/alert-dialog.js +1 -1
  4. package/dist/browser-only-CPH56Xw_.js +1 -0
  5. package/dist/browser-only.js +1 -1
  6. package/dist/checkbox-Apow0ipK.js +1 -0
  7. package/dist/checkbox.d.ts +5 -1
  8. package/dist/checkbox.js +1 -1
  9. package/dist/choice-D6S38dPs.js +1 -0
  10. package/dist/choice.d.ts +251 -0
  11. package/dist/choice.js +1 -0
  12. package/dist/code-block.js +1 -1
  13. package/dist/combobox.d.ts +12 -0
  14. package/dist/command.d.ts +3 -3
  15. package/dist/command.js +1 -1
  16. package/dist/{copy-to-clipboard-Baw30q9O.js → copy-to-clipboard-BsCQ9m6K.js} +1 -1
  17. package/dist/{dialog-Cp0S2jsG.js → dialog-uyJcNks7.js} +1 -1
  18. package/dist/dialog.d.ts +12 -0
  19. package/dist/dialog.js +1 -1
  20. package/dist/{dropdown-menu-BqdyTFLu.d.ts → dropdown-menu-CADgs9gz.d.ts} +16 -0
  21. package/dist/dropdown-menu.d.ts +1 -1
  22. package/dist/field.js +1 -1
  23. package/dist/hooks.d.ts +127 -67
  24. package/dist/hooks.js +1 -1
  25. package/dist/hover-card.d.ts +12 -0
  26. package/dist/icons.js +1 -1
  27. package/dist/{in-view-BC3wmz-a.d.ts → in-view-bItE1fkG.d.ts} +20 -4
  28. package/dist/input-B3TS9yAP.js +1 -0
  29. package/dist/input.d.ts +1 -46
  30. package/dist/input.js +1 -1
  31. package/dist/label-PY0qM0G5.d.ts +69 -0
  32. package/dist/label.d.ts +1 -68
  33. package/dist/list.d.ts +337 -0
  34. package/dist/list.js +1 -0
  35. package/dist/llms.txt +4 -1
  36. package/dist/multi-select.d.ts +12 -0
  37. package/dist/multi-select.js +1 -1
  38. package/dist/pagination.d.ts +1 -1
  39. package/dist/pagination.js +1 -1
  40. package/dist/popover.d.ts +12 -0
  41. package/dist/{primitive-BFUir4UB.js → primitive-BuVqb6zf.js} +1 -1
  42. package/dist/{select-C15-XvRT.d.ts → select-BUGOJMER.d.ts} +12 -0
  43. package/dist/{select-xfyY5Vt1.js → select-Bxq_N-_o.js} +1 -1
  44. package/dist/select.d.ts +1 -1
  45. package/dist/select.js +1 -1
  46. package/dist/selectable-list.d.ts +711 -0
  47. package/dist/selectable-list.js +1 -0
  48. package/dist/sheet.d.ts +12 -0
  49. package/dist/sheet.js +1 -1
  50. package/dist/split-button.d.ts +1 -1
  51. package/dist/switch.d.ts +4 -0
  52. package/dist/tabs.js +1 -1
  53. package/dist/{theme-provider-BNFS3Acf.js → theme-provider-C5XYi2-H.js} +1 -1
  54. package/dist/theme.d.ts +3 -3
  55. package/dist/theme.js +1 -1
  56. package/dist/{toast-Bwno5LUs.js → toast-CZBWjXcP.js} +1 -1
  57. package/dist/toast.js +1 -1
  58. package/dist/tooltip.d.ts +16 -0
  59. package/dist/types-CTam1uIW.d.ts +47 -0
  60. package/dist/use-copy-to-clipboard-DqQ0_N3E.js +1 -0
  61. package/dist/{use-prefers-reduced-motion-CWIoFA6W.js → use-prefers-reduced-motion-DBqNw1wB.js} +1 -1
  62. package/dist/utils.d.ts +1 -1
  63. package/dist/utils.js +1 -1
  64. package/dist/virtual-PBNiHjMK.js +1 -0
  65. package/package.json +64 -332
  66. package/dist/browser-only-BSl_hruR.js +0 -1
  67. package/dist/use-copy-to-clipboard-BLpquU9d.js +0 -1
@@ -0,0 +1,711 @@
1
+ import { t as WithAsChild } from "./as-child-uN_018tj.js";
2
+ import { o as WithValidation } from "./validation-xyX_6kph.js";
3
+ import { i as WithInputType, r as WithAutoComplete } from "./types-CTam1uIW.js";
4
+ import { ComponentProps, ReactElement, ReactNode } from "react";
5
+
6
+ //#region src/components/selectable-list/selectable-list.d.ts
7
+ /**
8
+ * A single selectable row in a {@link SelectableList}. The list is data-driven:
9
+ * map your domain objects into these options once, and the list owns filtering,
10
+ * selection, and (optionally) virtualization. Item *rendering* stays composable —
11
+ * pass a render-prop child to a viewport to draw your own layout.
12
+ *
13
+ * A `label` may be any ReactNode; when it isn't a plain string, `labelText` is
14
+ * required so the default filter has text to match.
15
+ *
16
+ * @see https://mantle.ngrok.com/components/selectable-list
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const option: SelectableListOption = {
21
+ * value: "key_123",
22
+ * label: "Onboarding key",
23
+ * description: "sk-…4f2a",
24
+ * };
25
+ * ```
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * // A rich label pairs with labelText (the filter's match target).
30
+ * const option: SelectableListOption = {
31
+ * value: "key_123",
32
+ * label: (
33
+ * <>
34
+ * <KeyIcon /> Onboarding key
35
+ * </>
36
+ * ),
37
+ * labelText: "Onboarding key",
38
+ * };
39
+ * ```
40
+ */
41
+ type SelectableListOption = {
42
+ /** Stable, unique selection value. This is what flows through `value` / `onValueChange`. */value: string; /** Optional de-emphasized sub-line under the title in the default row (e.g. a masked identifier). */
43
+ description?: ReactNode; /** When `true`, the row renders dimmed and cannot be toggled or selected by "select all". */
44
+ disabled?: boolean;
45
+ } & ({
46
+ /**
47
+ * Plain-text title — rendered in the default row and, as the checkbox's
48
+ * `<label>`, its accessible name. Also what the default filter matches
49
+ * (override that with `labelText`).
50
+ */
51
+ label: string; /** Optional plain-text override for what the default filter matches. */
52
+ labelText?: string;
53
+ } | {
54
+ /**
55
+ * A rich title (any ReactNode). Keep readable text inside — the rendered
56
+ * content is the checkbox's accessible name.
57
+ */
58
+ label: ReactNode; /** The plain-text form of the label. Required for a rich label so the default filter has text to match. */
59
+ labelText: string;
60
+ });
61
+ /**
62
+ * The plain-text form of an option's label: `labelText` when provided,
63
+ * otherwise the `label` itself when it is a string. This is what the default
64
+ * filter matches; reuse it in a custom `filter` predicate to keep label
65
+ * matching consistent while adding your own criteria. The option type requires
66
+ * `labelText` whenever `label` isn't a string, so the empty-string fallback
67
+ * only guards untyped callers.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * optionLabelText({ value: "a", label: "Onboarding key" }); // → "Onboarding key"
72
+ * optionLabelText({ value: "b", label: <em>prod</em>, labelText: "prod" }); // → "prod"
73
+ * ```
74
+ */
75
+ declare function optionLabelText(option: SelectableListOption): string;
76
+ /**
77
+ * Case-insensitive substring filter over each option's plain text (see
78
+ * {@link optionLabelText}: `labelText`, or a string `label`). Returns the input
79
+ * untouched for an empty/whitespace query so the common "no filter" path does no
80
+ * work. Pure — safe to unit test and to call from `useMemo`.
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * filterSelectableOptions(
85
+ * [{ value: "a", label: "Onboarding Key" }, { value: "b", label: "prod" }],
86
+ * "prod",
87
+ * ); // → [{ value: "b", label: "prod" }]
88
+ * ```
89
+ */
90
+ declare function filterSelectableOptions(options: readonly SelectableListOption[], query: string): readonly SelectableListOption[];
91
+ /**
92
+ * Add `value` to `values` if absent, or remove it if present. Returns a new
93
+ * array (never mutates) so it composes cleanly with controlled state setters.
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * toggleSelectionValue(["a"], "b"); // → ["a", "b"]
98
+ * toggleSelectionValue(["a", "b"], "a"); // → ["b"]
99
+ * ```
100
+ */
101
+ declare function toggleSelectionValue(values: readonly string[], value: string): string[];
102
+ /**
103
+ * Summarize how much of a set of options is selected, ignoring disabled options
104
+ * (they can't be selected by "select all"). Feeds straight into
105
+ * {@link selectAllChecked} to drive a tri-state header checkbox.
106
+ *
107
+ * @example
108
+ * ```ts
109
+ * summarizeSelection(
110
+ * [{ value: "a", label: "A" }, { value: "b", label: "B" }],
111
+ * new Set(["a"]),
112
+ * ); // → { allSelected: false, someSelected: true }
113
+ * ```
114
+ */
115
+ declare function summarizeSelection(options: readonly SelectableListOption[], selected: ReadonlySet<string>): {
116
+ allSelected: boolean;
117
+ someSelected: boolean;
118
+ };
119
+ /**
120
+ * Props for `SelectableList.Root`. Extends `<div>` props (minus `onChange`,
121
+ * which is replaced by `onValueChange`) with the option set and the
122
+ * controlled/uncontrolled selection state.
123
+ *
124
+ * @see https://mantle.ngrok.com/components/selectable-list
125
+ *
126
+ * @example
127
+ * ```tsx
128
+ * <SelectableList.Root options={options} value={selected} onValueChange={setSelected}>
129
+ * <SelectableList.Viewport aria-label="Access keys" />
130
+ * </SelectableList.Root>
131
+ * ```
132
+ */
133
+ type SelectableListRootProps = Omit<ComponentProps<"div">, "onChange"> & {
134
+ /** The full set of selectable rows. Map your domain data into these once. */options: readonly SelectableListOption[]; /** Controlled selected values. Pair with `onValueChange`. */
135
+ value?: readonly string[]; /** Initial selected values for the uncontrolled case. */
136
+ defaultValue?: readonly string[]; /** Called with the next selection whenever it changes. */
137
+ onValueChange?: (values: string[]) => void; /** Controlled filter query. Pair with `onQueryChange`. */
138
+ query?: string; /** Initial filter query for the uncontrolled case. */
139
+ defaultQuery?: string; /** Called with the next query whenever it changes (e.g. typing in `SelectableList.Filter`). */
140
+ onQueryChange?: (query: string) => void;
141
+ /**
142
+ * Custom filter predicate, called per option with the raw query; return
143
+ * `true` to keep the option. Defaults to a trimmed, case-insensitive
144
+ * substring match over each option's plain text (`labelText`, or a string
145
+ * `label`).
146
+ */
147
+ filter?: (option: SelectableListOption, query: string) => boolean;
148
+ };
149
+ /**
150
+ * Props for `SelectableList.Item`. Extends `<div>` props with the option
151
+ * `value` the row represents; selection and disabled state are read from the
152
+ * list by that value (`options[].disabled` is the single source of truth).
153
+ *
154
+ * @see https://mantle.ngrok.com/components/selectable-list
155
+ *
156
+ * @example
157
+ * ```tsx
158
+ * <SelectableList.Item value={option.value}>
159
+ * <SelectableList.ItemTitle>{option.label}</SelectableList.ItemTitle>
160
+ * <SelectableList.ItemDescription>{option.description}</SelectableList.ItemDescription>
161
+ * </SelectableList.Item>
162
+ * ```
163
+ */
164
+ type SelectableListItemProps = Omit<ComponentProps<"div">, "children" | "id"> & {
165
+ /** The option's selection value. Selection state is read from, and toggled in, the list. */value: string;
166
+ /**
167
+ * Item content — typically `SelectableList.ItemTitle` over a
168
+ * `SelectableList.ItemDescription`, or any layout you like. It fills the row's
169
+ * content `gridcell`; nested interactive content (links, buttons) is allowed.
170
+ */
171
+ children: ReactNode;
172
+ };
173
+ /**
174
+ * Props for `SelectableList.Viewport`. Extends `<div>` props (the scroll
175
+ * viewport) with an optional render-prop child for custom row layouts.
176
+ *
177
+ * @see https://mantle.ngrok.com/components/selectable-list
178
+ *
179
+ * @example
180
+ * ```tsx
181
+ * <SelectableList.Viewport aria-label="Access keys" className="max-h-80" />
182
+ * ```
183
+ */
184
+ type SelectableListViewportProps = Omit<ComponentProps<"div">, "children"> & {
185
+ /**
186
+ * Optional render-prop for custom row content, called per filtered option.
187
+ * Return a `SelectableList.Item` with your own layout, or `null` to skip
188
+ * the row. Non-element returns are dropped at runtime, so the type requires
189
+ * an element (or `null`) rather than any `ReactNode`. Defaults to a
190
+ * title + description row built from the option.
191
+ */
192
+ children?: (option: SelectableListOption) => ReactElement | null;
193
+ };
194
+ /**
195
+ * Props for `SelectableList.VirtualViewport` — the `Viewport` props plus the
196
+ * virtualizer knobs.
197
+ *
198
+ * @see https://mantle.ngrok.com/components/selectable-list
199
+ *
200
+ * @example
201
+ * ```tsx
202
+ * <SelectableList.VirtualViewport aria-label="Access keys" className="max-h-80" estimateItemHeight={44} />
203
+ * ```
204
+ */
205
+ type SelectableListVirtualViewportProps = SelectableListViewportProps & {
206
+ /** Estimated item height in px, used to seed the virtualizer before items are measured. */estimateItemHeight?: number; /** Rows rendered beyond the visible window on each side. */
207
+ overscan?: number;
208
+ };
209
+ /**
210
+ * A filterable, multi-select **grid** of checkbox rows — the inline
211
+ * (non-popover) counterpart to `MultiSelect`/`Combobox`. Map your data into
212
+ * `options` once; the list owns filtering, selection, and (optionally)
213
+ * virtualization. Each row is an APG grid `role="row"` (`aria-selected`) whose
214
+ * cells hold a real `Checkbox` and a `Choice`-laid-out title + description — the
215
+ * pattern that lets a selectable row carry a real control and nested interactive
216
+ * content. Non-virtualized by default; swap `Viewport` → `VirtualViewport` (same
217
+ * props) for windowing. Built on the shared `list` primitive.
218
+ *
219
+ * Keyboard: the grid is a single tab stop — `Arrow`/`Home`/`End` move an active
220
+ * row (tracked via `aria-activedescendant`, so navigation works across the full
221
+ * option set even when virtualized) and `Space`/`Enter` toggles it.
222
+ *
223
+ * @see https://mantle.ngrok.com/components/selectable-list
224
+ *
225
+ * @example
226
+ * Composition:
227
+ * ```
228
+ * SelectableList.Root
229
+ * ├── SelectableList.Filter
230
+ * ├── SelectableList.SelectAll
231
+ * ├── SelectableList.Viewport (or .VirtualViewport)
232
+ * │ └── SelectableList.Item (optional render-prop; auto-rendered by default)
233
+ * │ ├── SelectableList.ItemTitle
234
+ * │ └── SelectableList.ItemDescription
235
+ * └── SelectableList.Empty
236
+ * ```
237
+ *
238
+ * @example
239
+ * ```tsx
240
+ * const options = accessKeys.map((key) => ({
241
+ * value: key.id,
242
+ * label: key.name,
243
+ * description: key.maskedToken,
244
+ * }));
245
+ *
246
+ * <SelectableList.Root options={options} value={selected} onValueChange={setSelected}>
247
+ * <SelectableList.Filter placeholder="Filter access keys…" />
248
+ * <SelectableList.SelectAll>Select all</SelectableList.SelectAll>
249
+ * <SelectableList.Viewport aria-label="Access keys" className="max-h-80" />
250
+ * <SelectableList.Empty>No access keys found.</SelectableList.Empty>
251
+ * </SelectableList.Root>
252
+ * ```
253
+ */
254
+ declare const SelectableList: {
255
+ /**
256
+ * Root: owns selection + filter state and the derived filtered options.
257
+ *
258
+ * @see https://mantle.ngrok.com/components/selectable-list
259
+ *
260
+ * @example
261
+ * ```tsx
262
+ * <SelectableList.Root options={options} value={selected} onValueChange={setSelected}>
263
+ * <SelectableList.Filter placeholder="Filter access keys…" />
264
+ * <SelectableList.SelectAll>Select all</SelectableList.SelectAll>
265
+ * <SelectableList.Viewport aria-label="Access keys" className="max-h-80" />
266
+ * <SelectableList.Empty>No access keys found.</SelectableList.Empty>
267
+ * </SelectableList.Root>
268
+ * ```
269
+ */
270
+ readonly Root: import("react").ForwardRefExoticComponent<Omit<SelectableListRootProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
271
+ /**
272
+ * Optional filter/search box (mantle `Input` + magnifying-glass icon).
273
+ *
274
+ * @see https://mantle.ngrok.com/components/selectable-list
275
+ *
276
+ * @example
277
+ * ```tsx
278
+ * <SelectableList.Root options={options} value={selected} onValueChange={setSelected}>
279
+ * <SelectableList.Filter placeholder="Filter access keys…" />
280
+ * <SelectableList.SelectAll>Select all</SelectableList.SelectAll>
281
+ * <SelectableList.Viewport aria-label="Access keys" className="max-h-80" />
282
+ * <SelectableList.Empty>No access keys found.</SelectableList.Empty>
283
+ * </SelectableList.Root>
284
+ * ```
285
+ */
286
+ readonly Filter: import("react").ForwardRefExoticComponent<Omit<Omit<Omit<import("react").InputHTMLAttributes<HTMLInputElement>, "type" | "autoComplete"> & WithAutoComplete & WithInputType & WithValidation & {
287
+ children?: ReactNode | undefined;
288
+ } & import("react").RefAttributes<HTMLInputElement>, "ref">, "children" | "defaultValue" | "onChange" | "value" | "type"> & import("react").RefAttributes<HTMLInputElement>>;
289
+ /**
290
+ * Optional tri-state "select all" header over the filtered options.
291
+ *
292
+ * @see https://mantle.ngrok.com/components/selectable-list
293
+ *
294
+ * @example
295
+ * ```tsx
296
+ * <SelectableList.Root options={options} value={selected} onValueChange={setSelected}>
297
+ * <SelectableList.Filter placeholder="Filter access keys…" />
298
+ * <SelectableList.SelectAll>Select all</SelectableList.SelectAll>
299
+ * <SelectableList.Viewport aria-label="Access keys" className="max-h-80" />
300
+ * <SelectableList.Empty>No access keys found.</SelectableList.Empty>
301
+ * </SelectableList.Root>
302
+ * ```
303
+ */
304
+ readonly SelectAll: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "htmlFor">, "ref"> & import("react").RefAttributes<HTMLLabelElement>>;
305
+ /**
306
+ * The scrollable grid of rows (non-virtualized). Give it an `aria-label`;
307
+ * pass a render-prop child for a custom row layout, or omit it for the default.
308
+ *
309
+ * @see https://mantle.ngrok.com/components/selectable-list
310
+ *
311
+ * @example
312
+ * ```tsx
313
+ * <SelectableList.Root options={options} value={selected} onValueChange={setSelected}>
314
+ * <SelectableList.Filter placeholder="Filter access keys…" />
315
+ * <SelectableList.SelectAll>Select all</SelectableList.SelectAll>
316
+ * <SelectableList.Viewport aria-label="Access keys" className="max-h-80" />
317
+ * <SelectableList.Empty>No access keys found.</SelectableList.Empty>
318
+ * </SelectableList.Root>
319
+ * ```
320
+ */
321
+ readonly Viewport: import("react").ForwardRefExoticComponent<Omit<SelectableListViewportProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
322
+ /**
323
+ * The windowed grid of rows — same surface as `Viewport`, for long lists.
324
+ *
325
+ * @see https://mantle.ngrok.com/components/selectable-list
326
+ *
327
+ * @example
328
+ * ```tsx
329
+ * <SelectableList.Root options={options} value={selected} onValueChange={setSelected}>
330
+ * <SelectableList.Filter placeholder="Filter access keys…" />
331
+ * <SelectableList.SelectAll>Select all</SelectableList.SelectAll>
332
+ * <SelectableList.VirtualViewport aria-label="Access keys" className="max-h-80" />
333
+ * <SelectableList.Empty>No access keys found.</SelectableList.Empty>
334
+ * </SelectableList.Root>
335
+ * ```
336
+ */
337
+ readonly VirtualViewport: import("react").ForwardRefExoticComponent<Omit<SelectableListVirtualViewportProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
338
+ /**
339
+ * A selectable grid row for custom viewport rendering. Reads its selection
340
+ * and disabled state from the list by `value`.
341
+ *
342
+ * @see https://mantle.ngrok.com/components/selectable-list
343
+ *
344
+ * @example
345
+ * ```tsx
346
+ * <SelectableList.Root options={options} value={selected} onValueChange={setSelected}>
347
+ * <SelectableList.Filter placeholder="Filter access keys…" />
348
+ * <SelectableList.SelectAll>Select all</SelectableList.SelectAll>
349
+ * <SelectableList.Viewport aria-label="Access keys" className="max-h-80">
350
+ * {(option) => (
351
+ * <SelectableList.Item value={option.value}>
352
+ * <SelectableList.ItemTitle>{option.label}</SelectableList.ItemTitle>
353
+ * <SelectableList.ItemDescription>{option.description}</SelectableList.ItemDescription>
354
+ * </SelectableList.Item>
355
+ * )}
356
+ * </SelectableList.Viewport>
357
+ * <SelectableList.Empty>No access keys found.</SelectableList.Empty>
358
+ * </SelectableList.Root>
359
+ * ```
360
+ */
361
+ readonly Item: import("react").ForwardRefExoticComponent<Omit<SelectableListItemProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
362
+ /**
363
+ * Emphasized title (`Choice.Label`) for a `SelectableList.Item`.
364
+ *
365
+ * @see https://mantle.ngrok.com/components/selectable-list
366
+ *
367
+ * @example
368
+ * ```tsx
369
+ * <SelectableList.Root options={options} value={selected} onValueChange={setSelected}>
370
+ * <SelectableList.Filter placeholder="Filter access keys…" />
371
+ * <SelectableList.SelectAll>Select all</SelectableList.SelectAll>
372
+ * <SelectableList.Viewport aria-label="Access keys" className="max-h-80">
373
+ * {(option) => (
374
+ * <SelectableList.Item value={option.value}>
375
+ * <SelectableList.ItemTitle>{option.label}</SelectableList.ItemTitle>
376
+ * <SelectableList.ItemDescription>{option.description}</SelectableList.ItemDescription>
377
+ * </SelectableList.Item>
378
+ * )}
379
+ * </SelectableList.Viewport>
380
+ * <SelectableList.Empty>No access keys found.</SelectableList.Empty>
381
+ * </SelectableList.Root>
382
+ * ```
383
+ */
384
+ readonly ItemTitle: import("react").ForwardRefExoticComponent<Omit<Omit<{
385
+ children?: ReactNode;
386
+ form?: string | undefined | undefined;
387
+ slot?: string | undefined | undefined;
388
+ style?: import("react").CSSProperties | undefined;
389
+ title?: string | undefined | undefined;
390
+ onSelect?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
391
+ ref?: import("react").Ref<HTMLLabelElement> | undefined;
392
+ key?: import("react").Key | null | undefined;
393
+ defaultChecked?: boolean | undefined | undefined;
394
+ defaultValue?: string | number | readonly string[] | undefined;
395
+ suppressContentEditableWarning?: boolean | undefined | undefined;
396
+ suppressHydrationWarning?: boolean | undefined | undefined;
397
+ accessKey?: string | undefined | undefined;
398
+ autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
399
+ autoFocus?: boolean | undefined | undefined;
400
+ className?: string | undefined | undefined;
401
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
402
+ contextMenu?: string | undefined | undefined;
403
+ dir?: string | undefined | undefined;
404
+ draggable?: (boolean | "true" | "false") | undefined;
405
+ enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
406
+ hidden?: boolean | undefined | undefined;
407
+ id?: string | undefined | undefined;
408
+ lang?: string | undefined | undefined;
409
+ nonce?: string | undefined | undefined;
410
+ spellCheck?: (boolean | "true" | "false") | undefined;
411
+ tabIndex?: number | undefined | undefined;
412
+ translate?: "yes" | "no" | undefined | undefined;
413
+ radioGroup?: string | undefined | undefined;
414
+ role?: import("react").AriaRole | undefined;
415
+ about?: string | undefined | undefined;
416
+ content?: string | undefined | undefined;
417
+ datatype?: string | undefined | undefined;
418
+ inlist?: any;
419
+ prefix?: string | undefined | undefined;
420
+ property?: string | undefined | undefined;
421
+ rel?: string | undefined | undefined;
422
+ resource?: string | undefined | undefined;
423
+ rev?: string | undefined | undefined;
424
+ typeof?: string | undefined | undefined;
425
+ vocab?: string | undefined | undefined;
426
+ autoCorrect?: string | undefined | undefined;
427
+ autoSave?: string | undefined | undefined;
428
+ color?: string | undefined | undefined;
429
+ itemProp?: string | undefined | undefined;
430
+ itemScope?: boolean | undefined | undefined;
431
+ itemType?: string | undefined | undefined;
432
+ itemID?: string | undefined | undefined;
433
+ itemRef?: string | undefined | undefined;
434
+ results?: number | undefined | undefined;
435
+ security?: string | undefined | undefined;
436
+ unselectable?: "on" | "off" | undefined | undefined;
437
+ popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
438
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
439
+ popoverTarget?: string | undefined | undefined;
440
+ inert?: boolean | undefined | undefined;
441
+ inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
442
+ is?: string | undefined | undefined;
443
+ exportparts?: string | undefined | undefined;
444
+ part?: string | undefined | undefined;
445
+ "aria-activedescendant"?: string | undefined | undefined;
446
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
447
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
448
+ "aria-braillelabel"?: string | undefined | undefined;
449
+ "aria-brailleroledescription"?: string | undefined | undefined;
450
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
451
+ "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
452
+ "aria-colcount"?: number | undefined | undefined;
453
+ "aria-colindex"?: number | undefined | undefined;
454
+ "aria-colindextext"?: string | undefined | undefined;
455
+ "aria-colspan"?: number | undefined | undefined;
456
+ "aria-controls"?: string | undefined | undefined;
457
+ "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined | undefined;
458
+ "aria-describedby"?: string | undefined | undefined;
459
+ "aria-description"?: string | undefined | undefined;
460
+ "aria-details"?: string | undefined | undefined;
461
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
462
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
463
+ "aria-errormessage"?: string | undefined | undefined;
464
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
465
+ "aria-flowto"?: string | undefined | undefined;
466
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
467
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
468
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
469
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined | undefined;
470
+ "aria-keyshortcuts"?: string | undefined | undefined;
471
+ "aria-label"?: string | undefined | undefined;
472
+ "aria-labelledby"?: string | undefined | undefined;
473
+ "aria-level"?: number | undefined | undefined;
474
+ "aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
475
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
476
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
477
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
478
+ "aria-orientation"?: "horizontal" | "vertical" | undefined | undefined;
479
+ "aria-owns"?: string | undefined | undefined;
480
+ "aria-placeholder"?: string | undefined | undefined;
481
+ "aria-posinset"?: number | undefined | undefined;
482
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
483
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
484
+ "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
485
+ "aria-required"?: (boolean | "true" | "false") | undefined;
486
+ "aria-roledescription"?: string | undefined | undefined;
487
+ "aria-rowcount"?: number | undefined | undefined;
488
+ "aria-rowindex"?: number | undefined | undefined;
489
+ "aria-rowindextext"?: string | undefined | undefined;
490
+ "aria-rowspan"?: number | undefined | undefined;
491
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
492
+ "aria-setsize"?: number | undefined | undefined;
493
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined | undefined;
494
+ "aria-valuemax"?: number | undefined | undefined;
495
+ "aria-valuemin"?: number | undefined | undefined;
496
+ "aria-valuenow"?: number | undefined | undefined;
497
+ "aria-valuetext"?: string | undefined | undefined;
498
+ dangerouslySetInnerHTML?: {
499
+ __html: string | TrustedHTML;
500
+ } | undefined | undefined;
501
+ onCopy?: import("react").ClipboardEventHandler<HTMLLabelElement> | undefined;
502
+ onCopyCapture?: import("react").ClipboardEventHandler<HTMLLabelElement> | undefined;
503
+ onCut?: import("react").ClipboardEventHandler<HTMLLabelElement> | undefined;
504
+ onCutCapture?: import("react").ClipboardEventHandler<HTMLLabelElement> | undefined;
505
+ onPaste?: import("react").ClipboardEventHandler<HTMLLabelElement> | undefined;
506
+ onPasteCapture?: import("react").ClipboardEventHandler<HTMLLabelElement> | undefined;
507
+ onCompositionEnd?: import("react").CompositionEventHandler<HTMLLabelElement> | undefined;
508
+ onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLLabelElement> | undefined;
509
+ onCompositionStart?: import("react").CompositionEventHandler<HTMLLabelElement> | undefined;
510
+ onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLLabelElement> | undefined;
511
+ onCompositionUpdate?: import("react").CompositionEventHandler<HTMLLabelElement> | undefined;
512
+ onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLLabelElement> | undefined;
513
+ onFocus?: import("react").FocusEventHandler<HTMLLabelElement> | undefined;
514
+ onFocusCapture?: import("react").FocusEventHandler<HTMLLabelElement> | undefined;
515
+ onBlur?: import("react").FocusEventHandler<HTMLLabelElement> | undefined;
516
+ onBlurCapture?: import("react").FocusEventHandler<HTMLLabelElement> | undefined;
517
+ onChange?: import("react").ChangeEventHandler<HTMLLabelElement, Element> | undefined;
518
+ onChangeCapture?: import("react").ChangeEventHandler<HTMLLabelElement, Element> | undefined;
519
+ onBeforeInput?: import("react").InputEventHandler<HTMLLabelElement> | undefined;
520
+ onBeforeInputCapture?: import("react").InputEventHandler<HTMLLabelElement> | undefined;
521
+ onInput?: import("react").InputEventHandler<HTMLLabelElement> | undefined;
522
+ onInputCapture?: import("react").InputEventHandler<HTMLLabelElement> | undefined;
523
+ onReset?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
524
+ onResetCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
525
+ onSubmit?: import("react").SubmitEventHandler<HTMLLabelElement> | undefined;
526
+ onSubmitCapture?: import("react").SubmitEventHandler<HTMLLabelElement> | undefined;
527
+ onInvalid?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
528
+ onInvalidCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
529
+ onLoad?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
530
+ onLoadCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
531
+ onError?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
532
+ onErrorCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
533
+ onKeyDown?: import("react").KeyboardEventHandler<HTMLLabelElement> | undefined;
534
+ onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLLabelElement> | undefined;
535
+ onKeyPress?: import("react").KeyboardEventHandler<HTMLLabelElement> | undefined;
536
+ onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLLabelElement> | undefined;
537
+ onKeyUp?: import("react").KeyboardEventHandler<HTMLLabelElement> | undefined;
538
+ onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLLabelElement> | undefined;
539
+ onAbort?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
540
+ onAbortCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
541
+ onCanPlay?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
542
+ onCanPlayCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
543
+ onCanPlayThrough?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
544
+ onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
545
+ onDurationChange?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
546
+ onDurationChangeCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
547
+ onEmptied?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
548
+ onEmptiedCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
549
+ onEncrypted?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
550
+ onEncryptedCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
551
+ onEnded?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
552
+ onEndedCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
553
+ onLoadedData?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
554
+ onLoadedDataCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
555
+ onLoadedMetadata?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
556
+ onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
557
+ onLoadStart?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
558
+ onLoadStartCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
559
+ onPause?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
560
+ onPauseCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
561
+ onPlay?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
562
+ onPlayCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
563
+ onPlaying?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
564
+ onPlayingCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
565
+ onProgress?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
566
+ onProgressCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
567
+ onRateChange?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
568
+ onRateChangeCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
569
+ onSeeked?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
570
+ onSeekedCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
571
+ onSeeking?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
572
+ onSeekingCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
573
+ onStalled?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
574
+ onStalledCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
575
+ onSuspend?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
576
+ onSuspendCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
577
+ onTimeUpdate?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
578
+ onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
579
+ onVolumeChange?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
580
+ onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
581
+ onWaiting?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
582
+ onWaitingCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
583
+ onAuxClick?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
584
+ onAuxClickCapture?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
585
+ onClick?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
586
+ onClickCapture?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
587
+ onContextMenu?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
588
+ onContextMenuCapture?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
589
+ onDoubleClick?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
590
+ onDoubleClickCapture?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
591
+ onDrag?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
592
+ onDragCapture?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
593
+ onDragEnd?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
594
+ onDragEndCapture?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
595
+ onDragEnter?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
596
+ onDragEnterCapture?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
597
+ onDragExit?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
598
+ onDragExitCapture?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
599
+ onDragLeave?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
600
+ onDragLeaveCapture?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
601
+ onDragOver?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
602
+ onDragOverCapture?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
603
+ onDragStart?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
604
+ onDragStartCapture?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
605
+ onDrop?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
606
+ onDropCapture?: import("react").DragEventHandler<HTMLLabelElement> | undefined;
607
+ onMouseDown?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
608
+ onMouseDownCapture?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
609
+ onMouseEnter?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
610
+ onMouseLeave?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
611
+ onMouseMove?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
612
+ onMouseMoveCapture?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
613
+ onMouseOut?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
614
+ onMouseOutCapture?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
615
+ onMouseOver?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
616
+ onMouseOverCapture?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
617
+ onMouseUp?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
618
+ onMouseUpCapture?: import("react").MouseEventHandler<HTMLLabelElement> | undefined;
619
+ onSelectCapture?: import("react").ReactEventHandler<HTMLLabelElement> | undefined;
620
+ onTouchCancel?: import("react").TouchEventHandler<HTMLLabelElement> | undefined;
621
+ onTouchCancelCapture?: import("react").TouchEventHandler<HTMLLabelElement> | undefined;
622
+ onTouchEnd?: import("react").TouchEventHandler<HTMLLabelElement> | undefined;
623
+ onTouchEndCapture?: import("react").TouchEventHandler<HTMLLabelElement> | undefined;
624
+ onTouchMove?: import("react").TouchEventHandler<HTMLLabelElement> | undefined;
625
+ onTouchMoveCapture?: import("react").TouchEventHandler<HTMLLabelElement> | undefined;
626
+ onTouchStart?: import("react").TouchEventHandler<HTMLLabelElement> | undefined;
627
+ onTouchStartCapture?: import("react").TouchEventHandler<HTMLLabelElement> | undefined;
628
+ onPointerDown?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
629
+ onPointerDownCapture?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
630
+ onPointerMove?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
631
+ onPointerMoveCapture?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
632
+ onPointerUp?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
633
+ onPointerUpCapture?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
634
+ onPointerCancel?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
635
+ onPointerCancelCapture?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
636
+ onPointerEnter?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
637
+ onPointerLeave?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
638
+ onPointerOver?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
639
+ onPointerOverCapture?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
640
+ onPointerOut?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
641
+ onPointerOutCapture?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
642
+ onGotPointerCapture?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
643
+ onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
644
+ onLostPointerCapture?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
645
+ onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLLabelElement> | undefined;
646
+ onScroll?: import("react").UIEventHandler<HTMLLabelElement> | undefined;
647
+ onScrollCapture?: import("react").UIEventHandler<HTMLLabelElement> | undefined;
648
+ onScrollEnd?: import("react").UIEventHandler<HTMLLabelElement> | undefined;
649
+ onScrollEndCapture?: import("react").UIEventHandler<HTMLLabelElement> | undefined;
650
+ onWheel?: import("react").WheelEventHandler<HTMLLabelElement> | undefined;
651
+ onWheelCapture?: import("react").WheelEventHandler<HTMLLabelElement> | undefined;
652
+ onAnimationStart?: import("react").AnimationEventHandler<HTMLLabelElement> | undefined;
653
+ onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLLabelElement> | undefined;
654
+ onAnimationEnd?: import("react").AnimationEventHandler<HTMLLabelElement> | undefined;
655
+ onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLLabelElement> | undefined;
656
+ onAnimationIteration?: import("react").AnimationEventHandler<HTMLLabelElement> | undefined;
657
+ onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLLabelElement> | undefined;
658
+ onToggle?: import("react").ToggleEventHandler<HTMLLabelElement> | undefined;
659
+ onBeforeToggle?: import("react").ToggleEventHandler<HTMLLabelElement> | undefined;
660
+ onTransitionCancel?: import("react").TransitionEventHandler<HTMLLabelElement> | undefined;
661
+ onTransitionCancelCapture?: import("react").TransitionEventHandler<HTMLLabelElement> | undefined;
662
+ onTransitionEnd?: import("react").TransitionEventHandler<HTMLLabelElement> | undefined;
663
+ onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLLabelElement> | undefined;
664
+ onTransitionRun?: import("react").TransitionEventHandler<HTMLLabelElement> | undefined;
665
+ onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLLabelElement> | undefined;
666
+ onTransitionStart?: import("react").TransitionEventHandler<HTMLLabelElement> | undefined;
667
+ onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLLabelElement> | undefined;
668
+ }, "ref"> & import("react").RefAttributes<HTMLLabelElement>, "ref"> & import("react").RefAttributes<HTMLLabelElement>>;
669
+ /**
670
+ * De-emphasized sub-line (`Choice.Description`) for a `SelectableList.Item`.
671
+ *
672
+ * @see https://mantle.ngrok.com/components/selectable-list
673
+ *
674
+ * @example
675
+ * ```tsx
676
+ * <SelectableList.Root options={options} value={selected} onValueChange={setSelected}>
677
+ * <SelectableList.Filter placeholder="Filter access keys…" />
678
+ * <SelectableList.SelectAll>Select all</SelectableList.SelectAll>
679
+ * <SelectableList.Viewport aria-label="Access keys" className="max-h-80">
680
+ * {(option) => (
681
+ * <SelectableList.Item value={option.value}>
682
+ * <SelectableList.ItemTitle>{option.label}</SelectableList.ItemTitle>
683
+ * <SelectableList.ItemDescription>{option.description}</SelectableList.ItemDescription>
684
+ * </SelectableList.Item>
685
+ * )}
686
+ * </SelectableList.Viewport>
687
+ * <SelectableList.Empty>No access keys found.</SelectableList.Empty>
688
+ * </SelectableList.Root>
689
+ * ```
690
+ */
691
+ readonly ItemDescription: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLParagraphElement> & import("react").HTMLAttributes<HTMLParagraphElement> & WithAsChild, "ref"> & import("react").RefAttributes<HTMLParagraphElement>, "ref"> & import("react").RefAttributes<HTMLParagraphElement>>;
692
+ /**
693
+ * Shown when the filter matches no options — a polite `role="status"` live
694
+ * region, so the empty state is announced as the filter narrows.
695
+ *
696
+ * @see https://mantle.ngrok.com/components/selectable-list
697
+ *
698
+ * @example
699
+ * ```tsx
700
+ * <SelectableList.Root options={options} value={selected} onValueChange={setSelected}>
701
+ * <SelectableList.Filter placeholder="Filter access keys…" />
702
+ * <SelectableList.SelectAll>Select all</SelectableList.SelectAll>
703
+ * <SelectableList.Viewport aria-label="Access keys" className="max-h-80" />
704
+ * <SelectableList.Empty>No access keys found.</SelectableList.Empty>
705
+ * </SelectableList.Root>
706
+ * ```
707
+ */
708
+ readonly Empty: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
709
+ };
710
+ //#endregion
711
+ export { SelectableList, type SelectableListItemProps, type SelectableListOption, type SelectableListRootProps, type SelectableListViewportProps, type SelectableListVirtualViewportProps, filterSelectableOptions, optionLabelText, summarizeSelection, toggleSelectionValue };