@dloizides/ui-forms 1.14.0 → 1.16.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.
- package/CHANGELOG.md +19 -0
- package/dist/index.d.mts +98 -16
- package/dist/index.d.ts +98 -16
- package/dist/index.js +220 -96
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +218 -97
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.15.0
|
|
4
|
+
|
|
5
|
+
**`FormSwitch` now emits `aria-checked` / `aria-disabled` on web; `ChipSelector` gained an option icon slot and opt-in radio semantics.**
|
|
6
|
+
|
|
7
|
+
`FormSwitch` (A11Y-ARIA-CHECKED-1): react-native-web 0.21 emits nothing from `accessibilityState` on web, so the
|
|
8
|
+
switch wrapper rendered `role="switch"` with no `aria-checked` - an invalid switch that announced no state. The
|
|
9
|
+
state is now passed as literal `aria-checked` (always) and `aria-disabled` (only when disabled) web props;
|
|
10
|
+
`accessibilityState` also carries `disabled` for native.
|
|
11
|
+
|
|
12
|
+
`ChipSelector`:
|
|
13
|
+
- `ChipOption.icon?: React.ReactNode` - rendered before the label inside the chip, wrapped `aria-hidden`. Options
|
|
14
|
+
without an icon render the exact same tree as before.
|
|
15
|
+
- `singleSelectRole?: 'button' | 'radio'` (type `ChipSingleSelectRole`). Default `button` = unchanged. With
|
|
16
|
+
`radio` and `multiple` unset, the group is `role="radiogroup"` and each chip `role="radio"` + `aria-checked`.
|
|
17
|
+
Ignored for multi-select. Trade-off: RN-web renders a radio chip as a `<div>`, which activates on Enter but not
|
|
18
|
+
Space and has no arrow-key roving focus.
|
|
19
|
+
|
|
20
|
+
**Additive and backward-compatible.** No prop set = identical DOM for every existing consumer.
|
|
21
|
+
|
|
3
22
|
## 1.14.0
|
|
4
23
|
|
|
5
24
|
**`FormField` gained an opt-in `recentKey` — remember the last N submitted values and offer them on focus.**
|
package/dist/index.d.mts
CHANGED
|
@@ -525,27 +525,24 @@ declare function useRecentValues(key: string, max?: number): RecentValues;
|
|
|
525
525
|
declare const DEFAULT_MAX_RECENTS = 10;
|
|
526
526
|
|
|
527
527
|
/**
|
|
528
|
-
*
|
|
529
|
-
*
|
|
530
|
-
* Two visual variants (both fully theme-driven):
|
|
531
|
-
* - `solid` (default) — the original filled-pill look: selected = solid primary fill with
|
|
532
|
-
* white ink. Unchanged, so existing consumers (erevna / katalogos / kefi) render identically.
|
|
533
|
-
* - `outline` — the AML v1 console look: an outlined pill on a muted fill; selected = a subtle
|
|
534
|
-
* tinted-outline (primary border + primary ink + a low-alpha primary wash), NOT a solid fill.
|
|
535
|
-
* Hover (web) lifts the border/ink to the primary colour.
|
|
536
|
-
*
|
|
537
|
-
* The label row, the error line and the container spacing come from the shared `Field` wrapper —
|
|
538
|
-
* NOT from a local `<Text>`. Its own label used to drift from `Field` on three of four axes
|
|
539
|
-
* (`marginBottom: 8` vs 4, no `fontSize` at all so ~14 vs 13, `colors.text` vs `textSecondary`),
|
|
540
|
-
* so a `ChipSelector` next to a `FormField` in a row/grid started a different distance down the
|
|
541
|
-
* column and read as a different weight of text. Now there is exactly one label implementation.
|
|
528
|
+
* Public + internal types for ChipSelector. Split out of `ChipSelector.tsx` so the component, its
|
|
529
|
+
* two chip variants and the radio keyboard hook can share them without a circular import.
|
|
542
530
|
*/
|
|
543
531
|
|
|
544
532
|
/** Visual variant. `solid` = filled selected pill (default); `outline` = v1 tinted-outline. */
|
|
545
533
|
type ChipVariant = 'solid' | 'outline';
|
|
534
|
+
/**
|
|
535
|
+
* Role of a SINGLE-select chip. `button` (default) = today's semantics; `radio` = opt-in
|
|
536
|
+
* `radiogroup` of `radio` chips carrying `aria-checked`. Ignored when `multiple` is set.
|
|
537
|
+
* A string union rather than a `const enum` to match `ChipVariant`: a const enum does not
|
|
538
|
+
* survive the package boundary for consumers compiled with `isolatedModules`.
|
|
539
|
+
*/
|
|
540
|
+
type ChipSingleSelectRole = 'button' | 'radio';
|
|
546
541
|
interface ChipOption<T> {
|
|
547
542
|
value: T;
|
|
548
543
|
label: string;
|
|
544
|
+
/** Optional decorative icon rendered before the label; hidden from assistive tech. */
|
|
545
|
+
icon?: React.ReactNode;
|
|
549
546
|
}
|
|
550
547
|
interface ChipSelectorProps<T> {
|
|
551
548
|
/** Optional — with no label, no label row is rendered (no phantom gap above the chips). */
|
|
@@ -585,8 +582,37 @@ interface ChipSelectorProps<T> {
|
|
|
585
582
|
* consumers keep their current announcement.
|
|
586
583
|
*/
|
|
587
584
|
optionAccessibilityHint?: string;
|
|
585
|
+
/**
|
|
586
|
+
* Opt-in radio semantics for a SINGLE-select group: the group becomes `role="radiogroup"` and
|
|
587
|
+
* each chip `role="radio"` + `aria-checked`, with the WAI-ARIA radio group keyboard pattern
|
|
588
|
+
* (Space activates, arrow keys move focus + selection with wrap, one roving tab stop).
|
|
589
|
+
* Defaults to `button` (unchanged behaviour). Ignored when `multiple` is set — a multi chip
|
|
590
|
+
* stays a toggle button with `aria-pressed`.
|
|
591
|
+
*/
|
|
592
|
+
singleSelectRole?: ChipSingleSelectRole;
|
|
588
593
|
}
|
|
589
|
-
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* Chip/pill selector for selecting one or multiple options.
|
|
597
|
+
*
|
|
598
|
+
* Two visual variants (both fully theme-driven):
|
|
599
|
+
* - `solid` (default) — the original filled-pill look: selected = solid primary fill with
|
|
600
|
+
* white ink. Unchanged, so existing consumers (erevna / katalogos / kefi) render identically.
|
|
601
|
+
* - `outline` — the AML v1 console look: an outlined pill on a muted fill; selected = a subtle
|
|
602
|
+
* tinted-outline (primary border + primary ink + a low-alpha primary wash), NOT a solid fill.
|
|
603
|
+
* Hover (web) lifts the border/ink to the primary colour.
|
|
604
|
+
*
|
|
605
|
+
* The label row, the error line and the container spacing come from the shared `Field` wrapper —
|
|
606
|
+
* NOT from a local `<Text>`. Its own label used to drift from `Field` on three of four axes
|
|
607
|
+
* (`marginBottom: 8` vs 4, no `fontSize` at all so ~14 vs 13, `colors.text` vs `textSecondary`),
|
|
608
|
+
* so a `ChipSelector` next to a `FormField` in a row/grid started a different distance down the
|
|
609
|
+
* column and read as a different weight of text. Now there is exactly one label implementation.
|
|
610
|
+
*
|
|
611
|
+
* Structure: chip variants in `components/`, the radio keyboard wiring in `hooks/`, and the pure
|
|
612
|
+
* resolvers (`chipIdentity`, colours, radio key logic) in `utils/`.
|
|
613
|
+
*/
|
|
614
|
+
|
|
615
|
+
declare const ChipSelector: <T extends string | number>({ label, options, value, onChange, multiple, disabled, variant, containerStyle, spacing, required, error, testID, chipTestIDPrefix, optionAccessibilityHint, singleSelectRole, }: ChipSelectorProps<T>) => React.ReactElement;
|
|
590
616
|
|
|
591
617
|
/**
|
|
592
618
|
* Reusable form switch/toggle with an optional description.
|
|
@@ -944,4 +970,60 @@ declare function suggestOptions(options: readonly ControlOption[], query: string
|
|
|
944
970
|
/** True when `text` is non-empty yet matches no option's value or label exactly (case-insensitive). */
|
|
945
971
|
declare function isUnmatched(options: readonly ControlOption[], text: string): boolean;
|
|
946
972
|
|
|
947
|
-
|
|
973
|
+
/**
|
|
974
|
+
* Group selection — the pure tri-state logic behind a "select all" / "select this category"
|
|
975
|
+
* control, kept out of any component so it is testable as LOGIC rather than through the DOM.
|
|
976
|
+
*
|
|
977
|
+
* ## Why it lives here and not in @dloizides/ui-tables
|
|
978
|
+
*
|
|
979
|
+
* `ui-tables` already had this arithmetic inside `DataTable/selection.ts`, but deliberately
|
|
980
|
+
* unexported: its tri-state is a `const enum`, which in a published `.d.ts` is an ambient const
|
|
981
|
+
* enum that every `isolatedModules` consumer rejects. It is also page-scoped and wired to the
|
|
982
|
+
* table's select-all banner. So the second consumer (a 12-tile console picker with no table in
|
|
983
|
+
* sight, and no reason to pull a table package into its bundle budget) could not reach it.
|
|
984
|
+
*
|
|
985
|
+
* This module is the extraction: domain-neutral (keys in, keys out — nothing here knows what a
|
|
986
|
+
* key *is*), component-free, and crossing the package boundary as a plain interface rather than
|
|
987
|
+
* an enum. `ui-tables` can adopt it and delete its private copy.
|
|
988
|
+
*/
|
|
989
|
+
/**
|
|
990
|
+
* A group's tri-state, as two booleans rather than an enum.
|
|
991
|
+
*
|
|
992
|
+
* `all` and `some` are mutually exclusive: a fully selected group is `{ all: true, some: false }`,
|
|
993
|
+
* so a caller can branch on `all` then `some` without re-deriving "partial" itself. Both false
|
|
994
|
+
* means nothing in the group is selected — which is also what an EMPTY group reports, because an
|
|
995
|
+
* empty group is neither fully nor partially selected.
|
|
996
|
+
*/
|
|
997
|
+
interface GroupSelection {
|
|
998
|
+
/** Every key in the group is selected (never true for an empty group). */
|
|
999
|
+
readonly all: boolean;
|
|
1000
|
+
/** At least one, but not every, key in the group is selected — the mixed/indeterminate state. */
|
|
1001
|
+
readonly some: boolean;
|
|
1002
|
+
}
|
|
1003
|
+
/**
|
|
1004
|
+
* Resolve a group's tri-state from the selection ∩ the group.
|
|
1005
|
+
*
|
|
1006
|
+
* Scoped to the GROUP, not to the whole selection: selected keys OUTSIDE the group must never
|
|
1007
|
+
* make this group look partially selected.
|
|
1008
|
+
*/
|
|
1009
|
+
declare function resolveGroupSelection<T>(selected: readonly T[], groupKeys: readonly T[]): GroupSelection;
|
|
1010
|
+
/**
|
|
1011
|
+
* The value an `aria-checked` / `accessibilityState` consumer needs for a tri-state control.
|
|
1012
|
+
*
|
|
1013
|
+
* A partially selected group is `'mixed'`, which is what makes a screen reader announce the
|
|
1014
|
+
* control honestly instead of claiming the whole category is on.
|
|
1015
|
+
*/
|
|
1016
|
+
declare function groupAriaChecked(state: GroupSelection): boolean | 'mixed';
|
|
1017
|
+
/**
|
|
1018
|
+
* Toggle a whole group, returning the NEXT selection array. Pure — never mutates the input.
|
|
1019
|
+
*
|
|
1020
|
+
* All-on → off. Partial or off → on: the conventional behaviour, and the one a mixed checkbox
|
|
1021
|
+
* looks like it will do. Keys OUTSIDE the group always survive untouched, so a category control
|
|
1022
|
+
* can never silently clear a selection it does not own.
|
|
1023
|
+
*
|
|
1024
|
+
* `order`, when given, is the canonical key order the result is sorted into (catalogue order, say)
|
|
1025
|
+
* so the selection does not carry click order around. Without it, newly added keys are appended.
|
|
1026
|
+
*/
|
|
1027
|
+
declare function toggleGroupSelection<T>(selected: readonly T[], groupKeys: readonly T[], order?: readonly T[]): T[];
|
|
1028
|
+
|
|
1029
|
+
export { AnchoredMenu, type AnchoredMenuColors, type AnchoredMenuProps, type ChipOption, ChipSelector, type ChipSelectorProps, type ChipSingleSelectRole, type ChipVariant, type ControlOption, DEFAULT_MAX_RECENTS, DEFAULT_OPTIONAL_LABEL, DEFAULT_TYPEAHEAD_MAX_SUGGESTIONS, DEFAULT_TYPEAHEAD_MIN_CHARS, DateRangeControl, type DateRangeControlProps, type DateRangeValue, Field, type FieldChildContext, type FieldChildren, type FieldLabelVariant, type FieldMarker, type FieldProps, type FieldSpacing, FormActions, type FormActionsProps, FormCell, type FormCellProps, FormCheckbox, type FormCheckboxProps, FormField, type FormFieldProps, FormGrid, type FormGridProps, FormSection, type FormSectionProps, FormSwitch, type FormSwitchProps, type GroupSelection, type RecentValues, SelectControl, type SelectControlProps, type ThemedInput, ThemedTextInput, type ThemedTextInputProps, TypeaheadControl, type TypeaheadControlProps, type UseThemedInputOptions, controlStyles, groupAriaChecked, isUnmatched, resolveGroupSelection, suggestOptions, toggleGroupSelection, useRecentValues, useThemedInput };
|
package/dist/index.d.ts
CHANGED
|
@@ -525,27 +525,24 @@ declare function useRecentValues(key: string, max?: number): RecentValues;
|
|
|
525
525
|
declare const DEFAULT_MAX_RECENTS = 10;
|
|
526
526
|
|
|
527
527
|
/**
|
|
528
|
-
*
|
|
529
|
-
*
|
|
530
|
-
* Two visual variants (both fully theme-driven):
|
|
531
|
-
* - `solid` (default) — the original filled-pill look: selected = solid primary fill with
|
|
532
|
-
* white ink. Unchanged, so existing consumers (erevna / katalogos / kefi) render identically.
|
|
533
|
-
* - `outline` — the AML v1 console look: an outlined pill on a muted fill; selected = a subtle
|
|
534
|
-
* tinted-outline (primary border + primary ink + a low-alpha primary wash), NOT a solid fill.
|
|
535
|
-
* Hover (web) lifts the border/ink to the primary colour.
|
|
536
|
-
*
|
|
537
|
-
* The label row, the error line and the container spacing come from the shared `Field` wrapper —
|
|
538
|
-
* NOT from a local `<Text>`. Its own label used to drift from `Field` on three of four axes
|
|
539
|
-
* (`marginBottom: 8` vs 4, no `fontSize` at all so ~14 vs 13, `colors.text` vs `textSecondary`),
|
|
540
|
-
* so a `ChipSelector` next to a `FormField` in a row/grid started a different distance down the
|
|
541
|
-
* column and read as a different weight of text. Now there is exactly one label implementation.
|
|
528
|
+
* Public + internal types for ChipSelector. Split out of `ChipSelector.tsx` so the component, its
|
|
529
|
+
* two chip variants and the radio keyboard hook can share them without a circular import.
|
|
542
530
|
*/
|
|
543
531
|
|
|
544
532
|
/** Visual variant. `solid` = filled selected pill (default); `outline` = v1 tinted-outline. */
|
|
545
533
|
type ChipVariant = 'solid' | 'outline';
|
|
534
|
+
/**
|
|
535
|
+
* Role of a SINGLE-select chip. `button` (default) = today's semantics; `radio` = opt-in
|
|
536
|
+
* `radiogroup` of `radio` chips carrying `aria-checked`. Ignored when `multiple` is set.
|
|
537
|
+
* A string union rather than a `const enum` to match `ChipVariant`: a const enum does not
|
|
538
|
+
* survive the package boundary for consumers compiled with `isolatedModules`.
|
|
539
|
+
*/
|
|
540
|
+
type ChipSingleSelectRole = 'button' | 'radio';
|
|
546
541
|
interface ChipOption<T> {
|
|
547
542
|
value: T;
|
|
548
543
|
label: string;
|
|
544
|
+
/** Optional decorative icon rendered before the label; hidden from assistive tech. */
|
|
545
|
+
icon?: React.ReactNode;
|
|
549
546
|
}
|
|
550
547
|
interface ChipSelectorProps<T> {
|
|
551
548
|
/** Optional — with no label, no label row is rendered (no phantom gap above the chips). */
|
|
@@ -585,8 +582,37 @@ interface ChipSelectorProps<T> {
|
|
|
585
582
|
* consumers keep their current announcement.
|
|
586
583
|
*/
|
|
587
584
|
optionAccessibilityHint?: string;
|
|
585
|
+
/**
|
|
586
|
+
* Opt-in radio semantics for a SINGLE-select group: the group becomes `role="radiogroup"` and
|
|
587
|
+
* each chip `role="radio"` + `aria-checked`, with the WAI-ARIA radio group keyboard pattern
|
|
588
|
+
* (Space activates, arrow keys move focus + selection with wrap, one roving tab stop).
|
|
589
|
+
* Defaults to `button` (unchanged behaviour). Ignored when `multiple` is set — a multi chip
|
|
590
|
+
* stays a toggle button with `aria-pressed`.
|
|
591
|
+
*/
|
|
592
|
+
singleSelectRole?: ChipSingleSelectRole;
|
|
588
593
|
}
|
|
589
|
-
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* Chip/pill selector for selecting one or multiple options.
|
|
597
|
+
*
|
|
598
|
+
* Two visual variants (both fully theme-driven):
|
|
599
|
+
* - `solid` (default) — the original filled-pill look: selected = solid primary fill with
|
|
600
|
+
* white ink. Unchanged, so existing consumers (erevna / katalogos / kefi) render identically.
|
|
601
|
+
* - `outline` — the AML v1 console look: an outlined pill on a muted fill; selected = a subtle
|
|
602
|
+
* tinted-outline (primary border + primary ink + a low-alpha primary wash), NOT a solid fill.
|
|
603
|
+
* Hover (web) lifts the border/ink to the primary colour.
|
|
604
|
+
*
|
|
605
|
+
* The label row, the error line and the container spacing come from the shared `Field` wrapper —
|
|
606
|
+
* NOT from a local `<Text>`. Its own label used to drift from `Field` on three of four axes
|
|
607
|
+
* (`marginBottom: 8` vs 4, no `fontSize` at all so ~14 vs 13, `colors.text` vs `textSecondary`),
|
|
608
|
+
* so a `ChipSelector` next to a `FormField` in a row/grid started a different distance down the
|
|
609
|
+
* column and read as a different weight of text. Now there is exactly one label implementation.
|
|
610
|
+
*
|
|
611
|
+
* Structure: chip variants in `components/`, the radio keyboard wiring in `hooks/`, and the pure
|
|
612
|
+
* resolvers (`chipIdentity`, colours, radio key logic) in `utils/`.
|
|
613
|
+
*/
|
|
614
|
+
|
|
615
|
+
declare const ChipSelector: <T extends string | number>({ label, options, value, onChange, multiple, disabled, variant, containerStyle, spacing, required, error, testID, chipTestIDPrefix, optionAccessibilityHint, singleSelectRole, }: ChipSelectorProps<T>) => React.ReactElement;
|
|
590
616
|
|
|
591
617
|
/**
|
|
592
618
|
* Reusable form switch/toggle with an optional description.
|
|
@@ -944,4 +970,60 @@ declare function suggestOptions(options: readonly ControlOption[], query: string
|
|
|
944
970
|
/** True when `text` is non-empty yet matches no option's value or label exactly (case-insensitive). */
|
|
945
971
|
declare function isUnmatched(options: readonly ControlOption[], text: string): boolean;
|
|
946
972
|
|
|
947
|
-
|
|
973
|
+
/**
|
|
974
|
+
* Group selection — the pure tri-state logic behind a "select all" / "select this category"
|
|
975
|
+
* control, kept out of any component so it is testable as LOGIC rather than through the DOM.
|
|
976
|
+
*
|
|
977
|
+
* ## Why it lives here and not in @dloizides/ui-tables
|
|
978
|
+
*
|
|
979
|
+
* `ui-tables` already had this arithmetic inside `DataTable/selection.ts`, but deliberately
|
|
980
|
+
* unexported: its tri-state is a `const enum`, which in a published `.d.ts` is an ambient const
|
|
981
|
+
* enum that every `isolatedModules` consumer rejects. It is also page-scoped and wired to the
|
|
982
|
+
* table's select-all banner. So the second consumer (a 12-tile console picker with no table in
|
|
983
|
+
* sight, and no reason to pull a table package into its bundle budget) could not reach it.
|
|
984
|
+
*
|
|
985
|
+
* This module is the extraction: domain-neutral (keys in, keys out — nothing here knows what a
|
|
986
|
+
* key *is*), component-free, and crossing the package boundary as a plain interface rather than
|
|
987
|
+
* an enum. `ui-tables` can adopt it and delete its private copy.
|
|
988
|
+
*/
|
|
989
|
+
/**
|
|
990
|
+
* A group's tri-state, as two booleans rather than an enum.
|
|
991
|
+
*
|
|
992
|
+
* `all` and `some` are mutually exclusive: a fully selected group is `{ all: true, some: false }`,
|
|
993
|
+
* so a caller can branch on `all` then `some` without re-deriving "partial" itself. Both false
|
|
994
|
+
* means nothing in the group is selected — which is also what an EMPTY group reports, because an
|
|
995
|
+
* empty group is neither fully nor partially selected.
|
|
996
|
+
*/
|
|
997
|
+
interface GroupSelection {
|
|
998
|
+
/** Every key in the group is selected (never true for an empty group). */
|
|
999
|
+
readonly all: boolean;
|
|
1000
|
+
/** At least one, but not every, key in the group is selected — the mixed/indeterminate state. */
|
|
1001
|
+
readonly some: boolean;
|
|
1002
|
+
}
|
|
1003
|
+
/**
|
|
1004
|
+
* Resolve a group's tri-state from the selection ∩ the group.
|
|
1005
|
+
*
|
|
1006
|
+
* Scoped to the GROUP, not to the whole selection: selected keys OUTSIDE the group must never
|
|
1007
|
+
* make this group look partially selected.
|
|
1008
|
+
*/
|
|
1009
|
+
declare function resolveGroupSelection<T>(selected: readonly T[], groupKeys: readonly T[]): GroupSelection;
|
|
1010
|
+
/**
|
|
1011
|
+
* The value an `aria-checked` / `accessibilityState` consumer needs for a tri-state control.
|
|
1012
|
+
*
|
|
1013
|
+
* A partially selected group is `'mixed'`, which is what makes a screen reader announce the
|
|
1014
|
+
* control honestly instead of claiming the whole category is on.
|
|
1015
|
+
*/
|
|
1016
|
+
declare function groupAriaChecked(state: GroupSelection): boolean | 'mixed';
|
|
1017
|
+
/**
|
|
1018
|
+
* Toggle a whole group, returning the NEXT selection array. Pure — never mutates the input.
|
|
1019
|
+
*
|
|
1020
|
+
* All-on → off. Partial or off → on: the conventional behaviour, and the one a mixed checkbox
|
|
1021
|
+
* looks like it will do. Keys OUTSIDE the group always survive untouched, so a category control
|
|
1022
|
+
* can never silently clear a selection it does not own.
|
|
1023
|
+
*
|
|
1024
|
+
* `order`, when given, is the canonical key order the result is sorted into (catalogue order, say)
|
|
1025
|
+
* so the selection does not carry click order around. Without it, newly added keys are appended.
|
|
1026
|
+
*/
|
|
1027
|
+
declare function toggleGroupSelection<T>(selected: readonly T[], groupKeys: readonly T[], order?: readonly T[]): T[];
|
|
1028
|
+
|
|
1029
|
+
export { AnchoredMenu, type AnchoredMenuColors, type AnchoredMenuProps, type ChipOption, ChipSelector, type ChipSelectorProps, type ChipSingleSelectRole, type ChipVariant, type ControlOption, DEFAULT_MAX_RECENTS, DEFAULT_OPTIONAL_LABEL, DEFAULT_TYPEAHEAD_MAX_SUGGESTIONS, DEFAULT_TYPEAHEAD_MIN_CHARS, DateRangeControl, type DateRangeControlProps, type DateRangeValue, Field, type FieldChildContext, type FieldChildren, type FieldLabelVariant, type FieldMarker, type FieldProps, type FieldSpacing, FormActions, type FormActionsProps, FormCell, type FormCellProps, FormCheckbox, type FormCheckboxProps, FormField, type FormFieldProps, FormGrid, type FormGridProps, FormSection, type FormSectionProps, FormSwitch, type FormSwitchProps, type GroupSelection, type RecentValues, SelectControl, type SelectControlProps, type ThemedInput, ThemedTextInput, type ThemedTextInputProps, TypeaheadControl, type TypeaheadControlProps, type UseThemedInputOptions, controlStyles, groupAriaChecked, isUnmatched, resolveGroupSelection, suggestOptions, toggleGroupSelection, useRecentValues, useThemedInput };
|