@agentero/design-system 0.30.0 → 0.31.1
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/mcp/manifests/components.html +593 -184
- package/mcp/manifests/components.json +939 -406
- package/package.json +6 -1
- package/src/combobox/combobox.d.ts +200 -0
- package/src/combobox/combobox.js +118 -0
- package/src/combobox/icons.d.ts +10 -0
- package/src/combobox/icons.js +13 -0
- package/src/combobox/index.d.ts +34 -0
- package/src/combobox/index.js +13 -0
- package/src/field-text/field-text.js +9 -9
- package/src/form-text/form-text.js +7 -7
- package/src/input/input.d.ts +6 -39
- package/src/textarea/textarea.d.ts +6 -20
|
@@ -588,7 +588,7 @@
|
|
|
588
588
|
<header>
|
|
589
589
|
<div class="wrap">
|
|
590
590
|
<h1>Manifest Debugger</h1>
|
|
591
|
-
<div class="summary"><a class="filter-pill all" data-k="all" href="#filter-all">All</a><span class="filter-pill ok" aria-disabled="true">
|
|
591
|
+
<div class="summary"><a class="filter-pill all" data-k="all" href="#filter-all">All</a><span class="filter-pill ok" aria-disabled="true">33 components ok</span><span class="filter-pill ok" aria-disabled="true">263 stories ok</span></div>
|
|
592
592
|
</div>
|
|
593
593
|
</header>
|
|
594
594
|
<main>
|
|
@@ -2811,6 +2811,492 @@ import { CheckList } from '@agentero/design-system/check-list';
|
|
|
2811
2811
|
</div>
|
|
2812
2812
|
|
|
2813
2813
|
|
|
2814
|
+
</div>
|
|
2815
|
+
</article>
|
|
2816
|
+
<article
|
|
2817
|
+
class="card
|
|
2818
|
+
no-error
|
|
2819
|
+
no-info
|
|
2820
|
+
no-story-error
|
|
2821
|
+
no-doc-error"
|
|
2822
|
+
role="listitem"
|
|
2823
|
+
aria-label="Combobox.Root">
|
|
2824
|
+
<div class="head">
|
|
2825
|
+
<div class="title">
|
|
2826
|
+
<h2><span class="status-dot dot-ok"></span> Combobox.Root</h2>
|
|
2827
|
+
<div class="badges">
|
|
2828
|
+
<label for="c-7-components-combobox-props" class="badge ok as-toggle">38 prop types</label>
|
|
2829
|
+
|
|
2830
|
+
<label for="c-7-components-combobox-stories" class="badge ok as-toggle">7 stories</label>
|
|
2831
|
+
|
|
2832
|
+
|
|
2833
|
+
</div>
|
|
2834
|
+
</div>
|
|
2835
|
+
<div class="meta" title="./src/combobox/combobox.stories.tsx">components-combobox · ./src/combobox/combobox.stories.tsx</div>
|
|
2836
|
+
<div>Root provider for an input-triggered filterable list</div>
|
|
2837
|
+
<div class="hint">Combobox is a text input that filters a list and writes the chosen option back
|
|
2838
|
+
into itself. Focusing the input or typing opens the list; picking a row fills the
|
|
2839
|
+
input and closes it. Built on Base UI, whose Combobox primitive owns the
|
|
2840
|
+
filtering, the keyboard navigation and the `role="combobox"` wiring.</div>
|
|
2841
|
+
<div class="kv"><span class="chip">summary: Root provider for an input-triggered filterable list</span><span class="chip">see: {@link https://base-ui.com/react/components/combobox Base UI Combobox}</span><span class="chip">example: ```tsx
|
|
2842
|
+
import { Combobox } from '@agentero/design-system/combobox';
|
|
2843
|
+
|
|
2844
|
+
<Combobox.Root items={states}>
|
|
2845
|
+
<Combobox.Input placeholder="Search states" />
|
|
2846
|
+
<Combobox.Content>
|
|
2847
|
+
<Combobox.Empty>No matches found</Combobox.Empty>
|
|
2848
|
+
<Combobox.List>
|
|
2849
|
+
{(state: string) => <Combobox.Item key={state} value={state}>{state}</Combobox.Item>}
|
|
2850
|
+
</Combobox.List>
|
|
2851
|
+
</Combobox.Content>
|
|
2852
|
+
</Combobox.Root>
|
|
2853
|
+
```</span></div>
|
|
2854
|
+
</div>
|
|
2855
|
+
|
|
2856
|
+
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
2857
|
+
|
|
2858
|
+
|
|
2859
|
+
<input id="c-7-components-combobox-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
2860
|
+
|
|
2861
|
+
|
|
2862
|
+
<input id="c-7-components-combobox-props" class="tg tg-props" type="checkbox" hidden />
|
|
2863
|
+
|
|
2864
|
+
<div class="panels">
|
|
2865
|
+
|
|
2866
|
+
|
|
2867
|
+
|
|
2868
|
+
<div class="panel panel-props">
|
|
2869
|
+
<div class="note ok">
|
|
2870
|
+
<div class="row">
|
|
2871
|
+
<span class="ex-name">Prop types <small>(react-component-meta)</small></span>
|
|
2872
|
+
<span class="badge ok">38 prop types</span>
|
|
2873
|
+
</div>
|
|
2874
|
+
<pre><code>Component: src/combobox/index.ts::Combobox</code></pre>
|
|
2875
|
+
<pre><code>Props:</code></pre>
|
|
2876
|
+
<pre><code>/**
|
|
2877
|
+
* A ref to imperative actions.
|
|
2878
|
+
* - `unmount`: Manually unmounts the combobox.
|
|
2879
|
+
* Call this after any externally controlled closing animation finishes.
|
|
2880
|
+
*/
|
|
2881
|
+
actionsRef?: RefObject<Actions | null>
|
|
2882
|
+
|
|
2883
|
+
/**
|
|
2884
|
+
* Provides a hint to the browser for autofill.
|
|
2885
|
+
*/
|
|
2886
|
+
autoComplete?: string
|
|
2887
|
+
|
|
2888
|
+
/**
|
|
2889
|
+
* Whether the first matching item is highlighted automatically while filtering.
|
|
2890
|
+
*/
|
|
2891
|
+
autoHighlight?: boolean = false
|
|
2892
|
+
|
|
2893
|
+
children?: ReactNode
|
|
2894
|
+
|
|
2895
|
+
/**
|
|
2896
|
+
* The uncontrolled input value when initially rendered.
|
|
2897
|
+
*
|
|
2898
|
+
* To render a controlled input, use the `inputValue` prop instead.
|
|
2899
|
+
*/
|
|
2900
|
+
defaultInputValue?: string | number | readonly string[] | undefined
|
|
2901
|
+
|
|
2902
|
+
/**
|
|
2903
|
+
* Whether the popup is initially open.
|
|
2904
|
+
*
|
|
2905
|
+
* To render a controlled popup, use the `open` prop instead.
|
|
2906
|
+
*/
|
|
2907
|
+
defaultOpen?: boolean = false
|
|
2908
|
+
|
|
2909
|
+
/**
|
|
2910
|
+
* The uncontrolled selected value of the combobox when it's initially rendered.
|
|
2911
|
+
*
|
|
2912
|
+
* To render a controlled combobox, use the `value` prop instead.
|
|
2913
|
+
*/
|
|
2914
|
+
defaultValue?: unknown
|
|
2915
|
+
|
|
2916
|
+
/**
|
|
2917
|
+
* Whether the component should ignore user interaction.
|
|
2918
|
+
*/
|
|
2919
|
+
disabled?: boolean = false
|
|
2920
|
+
|
|
2921
|
+
/**
|
|
2922
|
+
* Filter function used to match items vs input query.
|
|
2923
|
+
* Receives the source item, which is the derived value's item when `items` is a `createItems()`
|
|
2924
|
+
* collection, and the item itself otherwise.
|
|
2925
|
+
*/
|
|
2926
|
+
filter?: ((item: unknown, query: string, itemToString?: ((item: unknown) => string) | undefined) => boolean) | null | undefined
|
|
2927
|
+
|
|
2928
|
+
/**
|
|
2929
|
+
* Filtered items to display in the list.
|
|
2930
|
+
* When provided, the list uses these items instead of filtering the `items` prop internally.
|
|
2931
|
+
* When `items` is also provided, this array must preserve its flat or grouped structure.
|
|
2932
|
+
* With a `createItems()` collection, pass source items rather than derived values.
|
|
2933
|
+
* Nullish entries are not supported, as in `items`.
|
|
2934
|
+
* Use when you want to control filtering logic externally with the `useFilter()` hook.
|
|
2935
|
+
*/
|
|
2936
|
+
filteredItems?: readonly unknown[] | readonly Group<unknown>[] | undefined
|
|
2937
|
+
|
|
2938
|
+
/**
|
|
2939
|
+
* Identifies the form that owns the internal input.
|
|
2940
|
+
* Useful when the combobox is rendered outside the form.
|
|
2941
|
+
*/
|
|
2942
|
+
form?: string
|
|
2943
|
+
|
|
2944
|
+
/**
|
|
2945
|
+
* Whether list items are presented in a grid layout.
|
|
2946
|
+
* When enabled, arrow keys navigate across rows and columns inferred from DOM rows.
|
|
2947
|
+
*/
|
|
2948
|
+
grid?: boolean = false
|
|
2949
|
+
|
|
2950
|
+
/**
|
|
2951
|
+
* Whether moving the pointer over items should highlight them.
|
|
2952
|
+
* Disabling this prop allows CSS `:hover` to be differentiated from the `:focus` (`data-highlighted`) state.
|
|
2953
|
+
*/
|
|
2954
|
+
highlightItemOnHover?: boolean = true
|
|
2955
|
+
|
|
2956
|
+
/**
|
|
2957
|
+
* The id of the component.
|
|
2958
|
+
*/
|
|
2959
|
+
id?: string
|
|
2960
|
+
|
|
2961
|
+
/**
|
|
2962
|
+
* Whether the list is rendered inline without using the component's own popup.
|
|
2963
|
+
*
|
|
2964
|
+
* Specify `open` unconditionally in conjunction with this prop so the list is considered
|
|
2965
|
+
* visible: `<Combobox.Root inline open>`
|
|
2966
|
+
*
|
|
2967
|
+
* In a `Combobox.Root` > `Dialog.Root` composition, bind the Combobox's `open` and
|
|
2968
|
+
* `onOpenChange` props to the `Dialog`'s `open` and `onOpenChange` state instead so the
|
|
2969
|
+
* component resets its transient state (filter query, highlighted item, and input value) when
|
|
2970
|
+
* the dialog closes.
|
|
2971
|
+
*/
|
|
2972
|
+
inline?: boolean = false
|
|
2973
|
+
|
|
2974
|
+
/**
|
|
2975
|
+
* A ref to the hidden input element.
|
|
2976
|
+
*/
|
|
2977
|
+
inputRef?: Ref<HTMLInputElement> | undefined
|
|
2978
|
+
|
|
2979
|
+
/**
|
|
2980
|
+
* The input value of the combobox. Use when controlled.
|
|
2981
|
+
*/
|
|
2982
|
+
inputValue?: string | number | readonly string[] | undefined
|
|
2983
|
+
|
|
2984
|
+
/**
|
|
2985
|
+
* Custom comparison logic used to determine if a combobox item value matches the current selected value. Useful when item values are objects without matching referentially.
|
|
2986
|
+
* With a `createItems()` collection, both arguments are derived values.
|
|
2987
|
+
* Defaults to `Object.is` comparison.
|
|
2988
|
+
*/
|
|
2989
|
+
isItemEqualToValue?: (itemValue: unknown, value: unknown) => boolean
|
|
2990
|
+
|
|
2991
|
+
/**
|
|
2992
|
+
* The items to be displayed in the list.
|
|
2993
|
+
* Can be a flat array of items, an array of groups with items, or a collection created by
|
|
2994
|
+
* the `createItems()` function, which derives each item's selection value and label.
|
|
2995
|
+
* Nullish entries are not supported: remove them from the data before passing it.
|
|
2996
|
+
*/
|
|
2997
|
+
items?: readonly any[] | readonly Group<any>[] | ComboboxItemCollection<unknown, unknown> | undefined
|
|
2998
|
+
|
|
2999
|
+
/**
|
|
3000
|
+
* When the item values are objects (`<Combobox.Item value={object}>`), this function converts the object value to a string representation for display in the input.
|
|
3001
|
+
* If the shape of the object is `{ value, label }`, the label will be used automatically without needing to specify this prop.
|
|
3002
|
+
* With a `createItems()` collection, this receives the derived value, and the collection's
|
|
3003
|
+
* `getLabel` takes precedence for values it can resolve.
|
|
3004
|
+
*/
|
|
3005
|
+
itemToStringLabel?: (itemValue: unknown) => string
|
|
3006
|
+
|
|
3007
|
+
/**
|
|
3008
|
+
* When the item values are objects (`<Combobox.Item value={object}>`), this function converts the object value to a string representation for form submission.
|
|
3009
|
+
* If the shape of the object is `{ value, label }`, the value will be used automatically without needing to specify this prop.
|
|
3010
|
+
* With a `createItems()` collection, this receives the derived value.
|
|
3011
|
+
*/
|
|
3012
|
+
itemToStringValue?: (itemValue: unknown) => string
|
|
3013
|
+
|
|
3014
|
+
/**
|
|
3015
|
+
* The maximum number of items to display in the list.
|
|
3016
|
+
*/
|
|
3017
|
+
limit?: number = -1
|
|
3018
|
+
|
|
3019
|
+
/**
|
|
3020
|
+
* The locale to use for string comparison.
|
|
3021
|
+
* Defaults to the user's runtime locale.
|
|
3022
|
+
*/
|
|
3023
|
+
locale?: LocalesArgument
|
|
3024
|
+
|
|
3025
|
+
/**
|
|
3026
|
+
* Whether to loop keyboard focus back to the input when the end of the list is reached while using the arrow keys. The first item can then be reached by pressing <kbd>ArrowDown</kbd> again from the input, or the last item can be reached by pressing <kbd>ArrowUp</kbd> from the input.
|
|
3027
|
+
* The input is always included in the focus loop per [ARIA Authoring Practices](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/).
|
|
3028
|
+
* When disabled, focus does not move when on the last element and the user presses <kbd>ArrowDown</kbd>, or when on the first element and the user presses <kbd>ArrowUp</kbd>.
|
|
3029
|
+
*/
|
|
3030
|
+
loopFocus?: boolean = true
|
|
3031
|
+
|
|
3032
|
+
/**
|
|
3033
|
+
* Determines if the popup enters a modal state when open.
|
|
3034
|
+
* - `true`: user interaction is limited to the popup: document page scroll is locked and pointer interactions on outside elements are disabled.
|
|
3035
|
+
* - `false`: user interaction with the rest of the document is allowed.
|
|
3036
|
+
*
|
|
3037
|
+
* On touch devices, a `true` modal blocks outside taps but leaves the page scrollable unless the popup spans nearly the full viewport width, matching native iOS behavior.
|
|
3038
|
+
*/
|
|
3039
|
+
modal?: boolean = false
|
|
3040
|
+
|
|
3041
|
+
/**
|
|
3042
|
+
* Whether multiple items can be selected.
|
|
3043
|
+
*/
|
|
3044
|
+
multiple?: false = false
|
|
3045
|
+
|
|
3046
|
+
/**
|
|
3047
|
+
* Identifies the field when a form is submitted.
|
|
3048
|
+
*/
|
|
3049
|
+
name?: string
|
|
3050
|
+
|
|
3051
|
+
/**
|
|
3052
|
+
* Event handler called when the input value changes.
|
|
3053
|
+
*/
|
|
3054
|
+
onInputValueChange?: (inputValue: string, eventDetails: ChangeEventDetails) => void
|
|
3055
|
+
|
|
3056
|
+
/**
|
|
3057
|
+
* Callback fired when an item is highlighted or unhighlighted.
|
|
3058
|
+
* Receives the highlighted item value (or `undefined` if no item is highlighted) and event details with a `reason` property describing why the highlight changed.
|
|
3059
|
+
* The `reason` can be:
|
|
3060
|
+
* - `'keyboard'`: the highlight changed due to keyboard navigation.
|
|
3061
|
+
* - `'pointer'`: the highlight changed due to pointer hovering.
|
|
3062
|
+
* - `'none'`: the highlight changed programmatically.
|
|
3063
|
+
*/
|
|
3064
|
+
onItemHighlighted?: (highlightedValue: unknown, eventDetails: HighlightEventDetails) => void
|
|
3065
|
+
|
|
3066
|
+
/**
|
|
3067
|
+
* Event handler called when the popup is opened or closed.
|
|
3068
|
+
*/
|
|
3069
|
+
onOpenChange?: (open: boolean, eventDetails: ChangeEventDetails) => void
|
|
3070
|
+
|
|
3071
|
+
/**
|
|
3072
|
+
* Event handler called after any animations complete when the popup is opened or closed.
|
|
3073
|
+
*/
|
|
3074
|
+
onOpenChangeComplete?: (open: boolean) => void
|
|
3075
|
+
|
|
3076
|
+
/**
|
|
3077
|
+
* Event handler called when the selected value of the combobox changes.
|
|
3078
|
+
*/
|
|
3079
|
+
onValueChange?: (value: unknown, eventDetails: ChangeEventDetails) => void
|
|
3080
|
+
|
|
3081
|
+
/**
|
|
3082
|
+
* Whether the popup is currently open. Use when controlled.
|
|
3083
|
+
*/
|
|
3084
|
+
open?: boolean
|
|
3085
|
+
|
|
3086
|
+
/**
|
|
3087
|
+
* Whether the popup opens when clicking the input.
|
|
3088
|
+
*/
|
|
3089
|
+
openOnInputClick?: boolean = true
|
|
3090
|
+
|
|
3091
|
+
/**
|
|
3092
|
+
* Whether the user should be unable to choose a different option from the popup.
|
|
3093
|
+
*/
|
|
3094
|
+
readOnly?: boolean = false
|
|
3095
|
+
|
|
3096
|
+
/**
|
|
3097
|
+
* Whether the user must choose a value before submitting a form.
|
|
3098
|
+
*/
|
|
3099
|
+
required?: boolean = false
|
|
3100
|
+
|
|
3101
|
+
/**
|
|
3102
|
+
* The selected value of the combobox. Use when controlled.
|
|
3103
|
+
*/
|
|
3104
|
+
value?: unknown
|
|
3105
|
+
|
|
3106
|
+
/**
|
|
3107
|
+
* Whether the items are being externally virtualized.
|
|
3108
|
+
*/
|
|
3109
|
+
virtualized?: boolean = false</code></pre>
|
|
3110
|
+
</div>
|
|
3111
|
+
</div>
|
|
3112
|
+
|
|
3113
|
+
<div class="panel panel-stories">
|
|
3114
|
+
|
|
3115
|
+
|
|
3116
|
+
|
|
3117
|
+
<div class="note ok">
|
|
3118
|
+
<div class="row">
|
|
3119
|
+
<span class="ex-name">Imports</span>
|
|
3120
|
+
</div>
|
|
3121
|
+
<pre><code>import { Button, Combobox, Field, FieldText, IconSearch, Label, Modal, Skeleton } from "@agentero/design-system";
|
|
3122
|
+
import { Suspense } from "react";</code></pre>
|
|
3123
|
+
</div>
|
|
3124
|
+
|
|
3125
|
+
|
|
3126
|
+
<div class="note ok">
|
|
3127
|
+
<div class="row">
|
|
3128
|
+
<span class="ex-name">Default</span>
|
|
3129
|
+
<span class="badge ok">story ok</span>
|
|
3130
|
+
</div>
|
|
3131
|
+
|
|
3132
|
+
<div class="hint">The common case: options are already in memory and Base UI filters them against
|
|
3133
|
+
what you type. Selecting a row fills the input and closes the list.</div>
|
|
3134
|
+
<pre><code>const Default = () => (
|
|
3135
|
+
<Combobox.Root items={STATES}>
|
|
3136
|
+
<Combobox.Input placeholder="Search states" aria-label="Search states" />
|
|
3137
|
+
<Combobox.Content>
|
|
3138
|
+
<Combobox.Empty>No matches found</Combobox.Empty>
|
|
3139
|
+
<Combobox.List>
|
|
3140
|
+
{(state: string) => (
|
|
3141
|
+
<Combobox.Item key={state} value={state}>
|
|
3142
|
+
{state}
|
|
3143
|
+
</Combobox.Item>
|
|
3144
|
+
)}
|
|
3145
|
+
</Combobox.List>
|
|
3146
|
+
</Combobox.Content>
|
|
3147
|
+
</Combobox.Root>
|
|
3148
|
+
);</code></pre>
|
|
3149
|
+
</div>
|
|
3150
|
+
<div class="note ok">
|
|
3151
|
+
<div class="row">
|
|
3152
|
+
<span class="ex-name">No Matches</span>
|
|
3153
|
+
<span class="badge ok">story ok</span>
|
|
3154
|
+
</div>
|
|
3155
|
+
|
|
3156
|
+
<div class="hint">`Empty` stays mounted so screen readers announce the change; it renders its
|
|
3157
|
+
children only while nothing matches. It needs `items` on `Root` to know that.</div>
|
|
3158
|
+
<pre><code>const NoMatches = () => (
|
|
3159
|
+
<Combobox.Root items={STATES}>
|
|
3160
|
+
<Combobox.Input placeholder="Search states" aria-label="Search states" />
|
|
3161
|
+
<Combobox.Content>
|
|
3162
|
+
<Combobox.Empty>No matches found</Combobox.Empty>
|
|
3163
|
+
<Combobox.List>
|
|
3164
|
+
{(state: string) => (
|
|
3165
|
+
<Combobox.Item key={state} value={state}>
|
|
3166
|
+
{state}
|
|
3167
|
+
</Combobox.Item>
|
|
3168
|
+
)}
|
|
3169
|
+
</Combobox.List>
|
|
3170
|
+
</Combobox.Content>
|
|
3171
|
+
</Combobox.Root>
|
|
3172
|
+
);</code></pre>
|
|
3173
|
+
</div>
|
|
3174
|
+
<div class="note ok">
|
|
3175
|
+
<div class="row">
|
|
3176
|
+
<span class="ex-name">Async Search</span>
|
|
3177
|
+
<span class="badge ok">story ok</span>
|
|
3178
|
+
</div>
|
|
3179
|
+
|
|
3180
|
+
<div class="hint">Options fetched as you type, the way the apps load data: the rows are a component
|
|
3181
|
+
that suspends on the request, so a `Suspense` boundary inside `Content` shows
|
|
3182
|
+
placeholder rows until they land. Nothing tracks `loading` by hand and no stale
|
|
3183
|
+
list lingers under the wait: the data is read by query, which is also what makes
|
|
3184
|
+
out-of-order responses harmless. Drop a `useSuspenseQuery` where `use()` is.</div>
|
|
3185
|
+
<pre><code>const AsyncSearch = () => <SuspenseSearch />;</code></pre>
|
|
3186
|
+
</div>
|
|
3187
|
+
<div class="note ok">
|
|
3188
|
+
<div class="row">
|
|
3189
|
+
<span class="ex-name">Async Search With Status</span>
|
|
3190
|
+
<span class="badge ok">story ok</span>
|
|
3191
|
+
</div>
|
|
3192
|
+
|
|
3193
|
+
<div class="hint">The same search without Suspense, for a consumer that gets a `loading` flag from
|
|
3194
|
+
its data layer instead: `filter={null}`, the rows arrive through `filteredItems`,
|
|
3195
|
+
`Content` is marked busy and `Status` announces the wait. The list is cleared
|
|
3196
|
+
before each request and a request that is no longer the latest is dropped.</div>
|
|
3197
|
+
<pre><code>const AsyncSearchWithStatus = () => <StatusSearch />;</code></pre>
|
|
3198
|
+
</div>
|
|
3199
|
+
<div class="note ok">
|
|
3200
|
+
<div class="row">
|
|
3201
|
+
<span class="ex-name">Inside Field Text</span>
|
|
3202
|
+
<span class="badge ok">story ok</span>
|
|
3203
|
+
</div>
|
|
3204
|
+
|
|
3205
|
+
<div class="hint">Dropped into a `FieldText`, the input takes the label, the description and
|
|
3206
|
+
the error from the field with nothing wired by hand: `Combobox.Input` reads the
|
|
3207
|
+
same `InputContext` the plain `Input` does.</div>
|
|
3208
|
+
<pre><code>const InsideFieldText = () => (
|
|
3209
|
+
<FieldText invalid required>
|
|
3210
|
+
<Label>Agency</Label>
|
|
3211
|
+
<Combobox.Root items={STATES}>
|
|
3212
|
+
<Combobox.Input placeholder="Search agencies" />
|
|
3213
|
+
<Combobox.Content>
|
|
3214
|
+
<Combobox.Empty>No matches found</Combobox.Empty>
|
|
3215
|
+
<Combobox.List>
|
|
3216
|
+
{(state: string) => (
|
|
3217
|
+
<Combobox.Item key={state} value={state}>
|
|
3218
|
+
{state}
|
|
3219
|
+
</Combobox.Item>
|
|
3220
|
+
)}
|
|
3221
|
+
</Combobox.List>
|
|
3222
|
+
</Combobox.Content>
|
|
3223
|
+
</Combobox.Root>
|
|
3224
|
+
<Field.Description>The agency this agent will be added to.</Field.Description>
|
|
3225
|
+
<Field.Error errors={[{ message: 'Pick an agency from the list' }]} />
|
|
3226
|
+
</FieldText>
|
|
3227
|
+
);</code></pre>
|
|
3228
|
+
</div>
|
|
3229
|
+
<div class="note ok">
|
|
3230
|
+
<div class="row">
|
|
3231
|
+
<span class="ex-name">With Leading Icon</span>
|
|
3232
|
+
<span class="badge ok">story ok</span>
|
|
3233
|
+
</div>
|
|
3234
|
+
|
|
3235
|
+
<div class="hint">A leading icon is composed around the input, not baked in: not every combobox
|
|
3236
|
+
is a search (a FEIN lookup or a template picker are not), so the component
|
|
3237
|
+
ships no icon of its own. Until `InputGroup` lands in the design system, the
|
|
3238
|
+
marketplace search fields get theirs like this — the icon overlaid, the input
|
|
3239
|
+
padded past it.</div>
|
|
3240
|
+
<pre><code>const WithLeadingIcon = () => (
|
|
3241
|
+
<Combobox.Root items={STATES}>
|
|
3242
|
+
<div className="relative">
|
|
3243
|
+
<IconSearch
|
|
3244
|
+
aria-hidden
|
|
3245
|
+
className="pointer-events-none absolute top-1/2 left-3 z-1 size-6 -translate-y-1/2 [&>path]:fill-icon-default-base-tertiary"
|
|
3246
|
+
/>
|
|
3247
|
+
<Combobox.Input className="pl-11" placeholder="Search states" aria-label="Search states" />
|
|
3248
|
+
</div>
|
|
3249
|
+
<Combobox.Content>
|
|
3250
|
+
<Combobox.Empty>No matches found</Combobox.Empty>
|
|
3251
|
+
<Combobox.List>
|
|
3252
|
+
{(state: string) => (
|
|
3253
|
+
<Combobox.Item key={state} value={state}>
|
|
3254
|
+
{state}
|
|
3255
|
+
</Combobox.Item>
|
|
3256
|
+
)}
|
|
3257
|
+
</Combobox.List>
|
|
3258
|
+
</Combobox.Content>
|
|
3259
|
+
</Combobox.Root>
|
|
3260
|
+
);</code></pre>
|
|
3261
|
+
</div>
|
|
3262
|
+
<div class="note ok">
|
|
3263
|
+
<div class="row">
|
|
3264
|
+
<span class="ex-name">Inside Modal</span>
|
|
3265
|
+
<span class="badge ok">story ok</span>
|
|
3266
|
+
</div>
|
|
3267
|
+
|
|
3268
|
+
<div class="hint">Inside a `Modal`, which is a Radix Dialog. The surface portals to the body, so
|
|
3269
|
+
this checks that the dialog's modal layer neither blocks pointer events on the
|
|
3270
|
+
list nor treats a click in it as a click outside and closes.</div>
|
|
3271
|
+
<pre><code>const InsideModal = () => (
|
|
3272
|
+
<Modal.Root>
|
|
3273
|
+
<Modal.Trigger asChild>
|
|
3274
|
+
<Button variant="secondary">Assign agency</Button>
|
|
3275
|
+
</Modal.Trigger>
|
|
3276
|
+
<Modal.Content>
|
|
3277
|
+
<Modal.Title>Assign agency</Modal.Title>
|
|
3278
|
+
<Modal.Body>
|
|
3279
|
+
<Combobox.Root items={STATES}>
|
|
3280
|
+
<Combobox.Input placeholder="Search states" aria-label="Search states" />
|
|
3281
|
+
<Combobox.Content>
|
|
3282
|
+
<Combobox.Empty>No matches found</Combobox.Empty>
|
|
3283
|
+
<Combobox.List>
|
|
3284
|
+
{(state: string) => (
|
|
3285
|
+
<Combobox.Item key={state} value={state}>
|
|
3286
|
+
{state}
|
|
3287
|
+
</Combobox.Item>
|
|
3288
|
+
)}
|
|
3289
|
+
</Combobox.List>
|
|
3290
|
+
</Combobox.Content>
|
|
3291
|
+
</Combobox.Root>
|
|
3292
|
+
</Modal.Body>
|
|
3293
|
+
</Modal.Content>
|
|
3294
|
+
</Modal.Root>
|
|
3295
|
+
);</code></pre>
|
|
3296
|
+
</div>
|
|
3297
|
+
</div>
|
|
3298
|
+
|
|
3299
|
+
|
|
2814
3300
|
</div>
|
|
2815
3301
|
</article>
|
|
2816
3302
|
<article
|
|
@@ -2825,9 +3311,9 @@ import { CheckList } from '@agentero/design-system/check-list';
|
|
|
2825
3311
|
<div class="title">
|
|
2826
3312
|
<h2><span class="status-dot dot-ok"></span> Command.Root</h2>
|
|
2827
3313
|
<div class="badges">
|
|
2828
|
-
<label for="c-
|
|
3314
|
+
<label for="c-8-components-command-props" class="badge ok as-toggle">10 prop types</label>
|
|
2829
3315
|
|
|
2830
|
-
<label for="c-
|
|
3316
|
+
<label for="c-8-components-command-stories" class="badge ok as-toggle">6 stories</label>
|
|
2831
3317
|
|
|
2832
3318
|
|
|
2833
3319
|
</div>
|
|
@@ -2860,10 +3346,10 @@ import { Command } from '@agentero/design-system/command';
|
|
|
2860
3346
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
2861
3347
|
|
|
2862
3348
|
|
|
2863
|
-
<input id="c-
|
|
3349
|
+
<input id="c-8-components-command-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
2864
3350
|
|
|
2865
3351
|
|
|
2866
|
-
<input id="c-
|
|
3352
|
+
<input id="c-8-components-command-props" class="tg tg-props" type="checkbox" hidden />
|
|
2867
3353
|
|
|
2868
3354
|
<div class="panels">
|
|
2869
3355
|
|
|
@@ -3077,9 +3563,9 @@ list does not invite the pointer.</div>
|
|
|
3077
3563
|
<div class="title">
|
|
3078
3564
|
<h2><span class="status-dot dot-ok"></span> DataTable.Root</h2>
|
|
3079
3565
|
<div class="badges">
|
|
3080
|
-
<label for="c-
|
|
3566
|
+
<label for="c-9-components-datatable-props" class="badge ok as-toggle">88 prop types</label>
|
|
3081
3567
|
|
|
3082
|
-
<label for="c-
|
|
3568
|
+
<label for="c-9-components-datatable-stories" class="badge ok as-toggle">4 stories</label>
|
|
3083
3569
|
|
|
3084
3570
|
|
|
3085
3571
|
</div>
|
|
@@ -3122,10 +3608,10 @@ const columns = [
|
|
|
3122
3608
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
3123
3609
|
|
|
3124
3610
|
|
|
3125
|
-
<input id="c-
|
|
3611
|
+
<input id="c-9-components-datatable-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
3126
3612
|
|
|
3127
3613
|
|
|
3128
|
-
<input id="c-
|
|
3614
|
+
<input id="c-9-components-datatable-props" class="tg tg-props" type="checkbox" hidden />
|
|
3129
3615
|
|
|
3130
3616
|
<div class="panels">
|
|
3131
3617
|
|
|
@@ -3703,9 +4189,9 @@ in flight.</div>
|
|
|
3703
4189
|
<div class="title">
|
|
3704
4190
|
<h2><span class="status-dot dot-ok"></span> Divider</h2>
|
|
3705
4191
|
<div class="badges">
|
|
3706
|
-
<label for="c-
|
|
4192
|
+
<label for="c-10-components-divider-props" class="badge ok as-toggle">4 prop types</label>
|
|
3707
4193
|
|
|
3708
|
-
<label for="c-
|
|
4194
|
+
<label for="c-10-components-divider-stories" class="badge ok as-toggle">10 stories</label>
|
|
3709
4195
|
|
|
3710
4196
|
|
|
3711
4197
|
</div>
|
|
@@ -3728,10 +4214,10 @@ When omitted, Divider renders a single line.</span><span class="chip">example: &
|
|
|
3728
4214
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
3729
4215
|
|
|
3730
4216
|
|
|
3731
|
-
<input id="c-
|
|
4217
|
+
<input id="c-10-components-divider-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
3732
4218
|
|
|
3733
4219
|
|
|
3734
|
-
<input id="c-
|
|
4220
|
+
<input id="c-10-components-divider-props" class="tg tg-props" type="checkbox" hidden />
|
|
3735
4221
|
|
|
3736
4222
|
<div class="panels">
|
|
3737
4223
|
|
|
@@ -4034,9 +4520,9 @@ related controls or inline links without visual weight.</div>
|
|
|
4034
4520
|
<div class="title">
|
|
4035
4521
|
<h2><span class="status-dot dot-ok"></span> DropdownMenu.Root</h2>
|
|
4036
4522
|
<div class="badges">
|
|
4037
|
-
<label for="c-
|
|
4523
|
+
<label for="c-11-components-dropdownmenu-props" class="badge ok as-toggle">6 prop types</label>
|
|
4038
4524
|
|
|
4039
|
-
<label for="c-
|
|
4525
|
+
<label for="c-11-components-dropdownmenu-stories" class="badge ok as-toggle">7 stories</label>
|
|
4040
4526
|
|
|
4041
4527
|
|
|
4042
4528
|
</div>
|
|
@@ -4095,10 +4581,10 @@ import { DropdownMenu } from '@agentero/design-system/dropdown-menu';
|
|
|
4095
4581
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
4096
4582
|
|
|
4097
4583
|
|
|
4098
|
-
<input id="c-
|
|
4584
|
+
<input id="c-11-components-dropdownmenu-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
4099
4585
|
|
|
4100
4586
|
|
|
4101
|
-
<input id="c-
|
|
4587
|
+
<input id="c-11-components-dropdownmenu-props" class="tg tg-props" type="checkbox" hidden />
|
|
4102
4588
|
|
|
4103
4589
|
<div class="panels">
|
|
4104
4590
|
|
|
@@ -4501,9 +4987,9 @@ actions outright unless the user needs to see them and understand why.</div>
|
|
|
4501
4987
|
<div class="title">
|
|
4502
4988
|
<h2><span class="status-dot dot-ok"></span> Field.Root</h2>
|
|
4503
4989
|
<div class="badges">
|
|
4504
|
-
<label for="c-
|
|
4990
|
+
<label for="c-12-components-field-props" class="badge ok as-toggle">6 prop types</label>
|
|
4505
4991
|
|
|
4506
|
-
<label for="c-
|
|
4992
|
+
<label for="c-12-components-field-stories" class="badge ok as-toggle">16 stories</label>
|
|
4507
4993
|
|
|
4508
4994
|
|
|
4509
4995
|
</div>
|
|
@@ -4535,10 +5021,10 @@ absent when there is none.</div>
|
|
|
4535
5021
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
4536
5022
|
|
|
4537
5023
|
|
|
4538
|
-
<input id="c-
|
|
5024
|
+
<input id="c-12-components-field-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
4539
5025
|
|
|
4540
5026
|
|
|
4541
|
-
<input id="c-
|
|
5027
|
+
<input id="c-12-components-field-props" class="tg tg-props" type="checkbox" hidden />
|
|
4542
5028
|
|
|
4543
5029
|
<div class="panels">
|
|
4544
5030
|
|
|
@@ -4988,9 +5474,9 @@ form library. `InputContext` extends the same way with `value`, `onChange`,
|
|
|
4988
5474
|
<div class="title">
|
|
4989
5475
|
<h2><span class="status-dot dot-ok"></span> FieldText</h2>
|
|
4990
5476
|
<div class="badges">
|
|
4991
|
-
<label for="c-
|
|
5477
|
+
<label for="c-13-components-fieldtext-props" class="badge ok as-toggle">6 prop types</label>
|
|
4992
5478
|
|
|
4993
|
-
<label for="c-
|
|
5479
|
+
<label for="c-13-components-fieldtext-stories" class="badge ok as-toggle">7 stories</label>
|
|
4994
5480
|
|
|
4995
5481
|
|
|
4996
5482
|
</div>
|
|
@@ -5017,10 +5503,10 @@ and `name`, and `FieldContext` with the errors, as the last story shows.</div>
|
|
|
5017
5503
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
5018
5504
|
|
|
5019
5505
|
|
|
5020
|
-
<input id="c-
|
|
5506
|
+
<input id="c-13-components-fieldtext-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
5021
5507
|
|
|
5022
5508
|
|
|
5023
|
-
<input id="c-
|
|
5509
|
+
<input id="c-13-components-fieldtext-props" class="tg tg-props" type="checkbox" hidden />
|
|
5024
5510
|
|
|
5025
5511
|
<div class="panels">
|
|
5026
5512
|
|
|
@@ -5236,9 +5722,9 @@ The input's own `onChange` still runs, chained after the provider's.</di
|
|
|
5236
5722
|
<div class="title">
|
|
5237
5723
|
<h2><span class="status-dot dot-ok"></span> Form.Root</h2>
|
|
5238
5724
|
<div class="badges">
|
|
5239
|
-
<label for="c-
|
|
5725
|
+
<label for="c-14-components-form-props" class="badge ok as-toggle">3 prop types</label>
|
|
5240
5726
|
|
|
5241
|
-
<label for="c-
|
|
5727
|
+
<label for="c-14-components-form-stories" class="badge ok as-toggle">2 stories</label>
|
|
5242
5728
|
|
|
5243
5729
|
|
|
5244
5730
|
</div>
|
|
@@ -5267,10 +5753,10 @@ keep a single copy, since the provider and the fields share one context.</div>
|
|
|
5267
5753
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
5268
5754
|
|
|
5269
5755
|
|
|
5270
|
-
<input id="c-
|
|
5756
|
+
<input id="c-14-components-form-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
5271
5757
|
|
|
5272
5758
|
|
|
5273
|
-
<input id="c-
|
|
5759
|
+
<input id="c-14-components-form-props" class="tg tg-props" type="checkbox" hidden />
|
|
5274
5760
|
|
|
5275
5761
|
<div class="panels">
|
|
5276
5762
|
|
|
@@ -5365,9 +5851,9 @@ Validation is react-hook-form's alone.</div>
|
|
|
5365
5851
|
<div class="title">
|
|
5366
5852
|
<h2><span class="status-dot dot-ok"></span> FormText</h2>
|
|
5367
5853
|
<div class="badges">
|
|
5368
|
-
<label for="c-
|
|
5854
|
+
<label for="c-15-components-formtext-props" class="badge ok as-toggle">15 prop types</label>
|
|
5369
5855
|
|
|
5370
|
-
<label for="c-
|
|
5856
|
+
<label for="c-15-components-formtext-stories" class="badge ok as-toggle">9 stories</label>
|
|
5371
5857
|
|
|
5372
5858
|
|
|
5373
5859
|
</div>
|
|
@@ -5397,10 +5883,10 @@ with the `FieldText`, `Label`, `Input` and `Field.*` primitives directly.</div>
|
|
|
5397
5883
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
5398
5884
|
|
|
5399
5885
|
|
|
5400
|
-
<input id="c-
|
|
5886
|
+
<input id="c-15-components-formtext-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
5401
5887
|
|
|
5402
5888
|
|
|
5403
|
-
<input id="c-
|
|
5889
|
+
<input id="c-15-components-formtext-props" class="tg tg-props" type="checkbox" hidden />
|
|
5404
5890
|
|
|
5405
5891
|
<div class="panels">
|
|
5406
5892
|
|
|
@@ -5522,7 +6008,7 @@ tooltip?: ReactNode
|
|
|
5522
6008
|
/**
|
|
5523
6009
|
* Preferred side of the tooltip. Defaults to `'top'`.
|
|
5524
6010
|
*/
|
|
5525
|
-
tooltipSide?: "
|
|
6011
|
+
tooltipSide?: "top" | "bottom" | "left" | "right"</code></pre>
|
|
5526
6012
|
</div>
|
|
5527
6013
|
</div>
|
|
5528
6014
|
|
|
@@ -5665,9 +6151,9 @@ hand.</div>
|
|
|
5665
6151
|
<div class="title">
|
|
5666
6152
|
<h2><span class="status-dot dot-ok"></span> HoverCard.Root</h2>
|
|
5667
6153
|
<div class="badges">
|
|
5668
|
-
<label for="c-
|
|
6154
|
+
<label for="c-16-components-hovercard-props" class="badge ok as-toggle">6 prop types</label>
|
|
5669
6155
|
|
|
5670
|
-
<label for="c-
|
|
6156
|
+
<label for="c-16-components-hovercard-stories" class="badge ok as-toggle">7 stories</label>
|
|
5671
6157
|
|
|
5672
6158
|
|
|
5673
6159
|
</div>
|
|
@@ -5699,10 +6185,10 @@ import { HoverCard } from '@agentero/design-system/hover-card';
|
|
|
5699
6185
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
5700
6186
|
|
|
5701
6187
|
|
|
5702
|
-
<input id="c-
|
|
6188
|
+
<input id="c-16-components-hovercard-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
5703
6189
|
|
|
5704
6190
|
|
|
5705
|
-
<input id="c-
|
|
6191
|
+
<input id="c-16-components-hovercard-props" class="tg tg-props" type="checkbox" hidden />
|
|
5706
6192
|
|
|
5707
6193
|
<div class="panels">
|
|
5708
6194
|
|
|
@@ -5949,9 +6435,9 @@ trigger-dense UIs where an instant preview reads as more responsive.</div>
|
|
|
5949
6435
|
<div class="title">
|
|
5950
6436
|
<h2><span class="status-dot dot-ok"></span> Input</h2>
|
|
5951
6437
|
<div class="badges">
|
|
5952
|
-
<label for="c-
|
|
6438
|
+
<label for="c-17-components-input-props" class="badge ok as-toggle">1 prop type</label>
|
|
5953
6439
|
|
|
5954
|
-
<label for="c-
|
|
6440
|
+
<label for="c-17-components-input-stories" class="badge ok as-toggle">9 stories</label>
|
|
5955
6441
|
|
|
5956
6442
|
|
|
5957
6443
|
</div>
|
|
@@ -5963,9 +6449,9 @@ trigger-dense UIs where an instant preview reads as more responsive.</div>
|
|
|
5963
6449
|
`aria-describedby` on its own; standalone, as here, they are plain props set
|
|
5964
6450
|
by hand.
|
|
5965
6451
|
|
|
5966
|
-
|
|
5967
|
-
destructive border follows, so the styling can never disagree with
|
|
5968
|
-
assistive technology announces.</div>
|
|
6452
|
+
The invalid state has no prop of its own. Mark the control `aria-invalid`
|
|
6453
|
+
and the destructive border follows, so the styling can never disagree with
|
|
6454
|
+
what assistive technology announces.</div>
|
|
5969
6455
|
<div class="kv"><span class="chip">summary: Base single-line text control that takes its wiring from InputContext</span><span class="chip">example: <Label htmlFor="email">Email</Label>
|
|
5970
6456
|
<Input id="email" type="email" placeholder="you@example.com" /></span><span class="chip">example: <Input id="email" aria-invalid aria-describedby="email-error" />
|
|
5971
6457
|
<span id="email-error">Enter a valid email address.</span></span></div>
|
|
@@ -5974,10 +6460,10 @@ assistive technology announces.</div>
|
|
|
5974
6460
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
5975
6461
|
|
|
5976
6462
|
|
|
5977
|
-
<input id="c-
|
|
6463
|
+
<input id="c-17-components-input-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
5978
6464
|
|
|
5979
6465
|
|
|
5980
|
-
<input id="c-
|
|
6466
|
+
<input id="c-17-components-input-props" class="tg tg-props" type="checkbox" hidden />
|
|
5981
6467
|
|
|
5982
6468
|
<div class="panels">
|
|
5983
6469
|
|
|
@@ -5987,58 +6473,18 @@ assistive technology announces.</div>
|
|
|
5987
6473
|
<div class="note ok">
|
|
5988
6474
|
<div class="row">
|
|
5989
6475
|
<span class="ex-name">Prop types <small>(react-component-meta)</small></span>
|
|
5990
|
-
<span class="badge ok">
|
|
6476
|
+
<span class="badge ok">1 prop type</span>
|
|
5991
6477
|
</div>
|
|
5992
6478
|
<pre><code>Component: src/input/input.tsx::Input</code></pre>
|
|
5993
6479
|
<pre><code>Props:</code></pre>
|
|
5994
6480
|
<pre><code>/**
|
|
5995
|
-
* Indicates the entered value does not conform to the format expected by the application.
|
|
5996
|
-
* Set this when the value fails validation: it drives the destructive border
|
|
5997
|
-
* and is what assistive technology announces. Point `aria-describedby` at
|
|
5998
|
-
* the error message so the two are read together.
|
|
5999
|
-
*/
|
|
6000
|
-
aria-invalid?: boolean | "true" | "false" | "grammar" | "spelling" | undefined
|
|
6001
|
-
|
|
6002
|
-
/**
|
|
6003
|
-
* Blocks interaction, greys the control out and drops its shadow. The value
|
|
6004
|
-
* is not submitted. When the user still needs to read or copy the value,
|
|
6005
|
-
* use `readOnly` instead.
|
|
6006
|
-
*/
|
|
6007
|
-
disabled?: boolean
|
|
6008
|
-
|
|
6009
|
-
/**
|
|
6010
|
-
* Short hint shown while the field is empty. It disappears on the first
|
|
6011
|
-
* keystroke, so it is never a substitute for a label.
|
|
6012
|
-
*/
|
|
6013
|
-
placeholder?: string
|
|
6014
|
-
|
|
6015
|
-
/**
|
|
6016
|
-
* Keeps the value focusable and copyable but not editable, and still
|
|
6017
|
-
* submits it. Unlike `disabled`, it stays in the tab order.
|
|
6018
|
-
*/
|
|
6019
|
-
readOnly?: boolean
|
|
6020
|
-
|
|
6021
|
-
/**
|
|
6022
|
-
* Marks the control required for both the browser and assistive technology.
|
|
6023
|
-
*/
|
|
6024
|
-
required?: boolean
|
|
6025
|
-
|
|
6026
|
-
/**
|
|
6027
6481
|
* Control height. Defaults to `'md'`.
|
|
6028
6482
|
* - `sm` (32px) — dense layouts where vertical space is tight.
|
|
6029
6483
|
* - `md` (40px) — standard form density.
|
|
6030
6484
|
* - `lg` (48px) — low-density forms and larger touch targets. Also raises
|
|
6031
6485
|
* the text to `base` and the corner radius to `lg`.
|
|
6032
6486
|
*/
|
|
6033
|
-
size?: "sm" | "md" | "lg"
|
|
6034
|
-
|
|
6035
|
-
/**
|
|
6036
|
-
* Native input type. Picks the on-screen keyboard on touch devices and the
|
|
6037
|
-
* browser's own parsing, so set it even when you validate yourself.
|
|
6038
|
-
* Defaults to `'text'`. Multi-line text is not one of the options — that is
|
|
6039
|
-
* a TextArea.
|
|
6040
|
-
*/
|
|
6041
|
-
type?: HTMLInputTypeAttribute | undefined</code></pre>
|
|
6487
|
+
size?: "sm" | "md" | "lg"</code></pre>
|
|
6042
6488
|
</div>
|
|
6043
6489
|
</div>
|
|
6044
6490
|
|
|
@@ -6189,9 +6635,9 @@ they cannot change.</div>
|
|
|
6189
6635
|
<div class="title">
|
|
6190
6636
|
<h2><span class="status-dot dot-ok"></span> Label</h2>
|
|
6191
6637
|
<div class="badges">
|
|
6192
|
-
<label for="c-
|
|
6638
|
+
<label for="c-18-components-label-props" class="badge ok as-toggle">3 prop types</label>
|
|
6193
6639
|
|
|
6194
|
-
<label for="c-
|
|
6640
|
+
<label for="c-18-components-label-stories" class="badge ok as-toggle">5 stories</label>
|
|
6195
6641
|
|
|
6196
6642
|
|
|
6197
6643
|
</div>
|
|
@@ -6211,10 +6657,10 @@ still has to carry `required` / `aria-required`.</div>
|
|
|
6211
6657
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
6212
6658
|
|
|
6213
6659
|
|
|
6214
|
-
<input id="c-
|
|
6660
|
+
<input id="c-18-components-label-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
6215
6661
|
|
|
6216
6662
|
|
|
6217
|
-
<input id="c-
|
|
6663
|
+
<input id="c-18-components-label-props" class="tg tg-props" type="checkbox" hidden />
|
|
6218
6664
|
|
|
6219
6665
|
<div class="panels">
|
|
6220
6666
|
|
|
@@ -6334,9 +6780,9 @@ field's control with no `htmlFor`. An explicit `htmlFor` still wins.</div>
|
|
|
6334
6780
|
<div class="title">
|
|
6335
6781
|
<h2><span class="status-dot dot-ok"></span> Loading</h2>
|
|
6336
6782
|
<div class="badges">
|
|
6337
|
-
<label for="c-
|
|
6783
|
+
<label for="c-19-components-loading-props" class="badge ok as-toggle">1 prop type</label>
|
|
6338
6784
|
|
|
6339
|
-
<label for="c-
|
|
6785
|
+
<label for="c-19-components-loading-stories" class="badge ok as-toggle">7 stories</label>
|
|
6340
6786
|
|
|
6341
6787
|
|
|
6342
6788
|
</div>
|
|
@@ -6353,10 +6799,10 @@ parent font size via `em`-based size variants (`sm`, `md`, `lg`).</div>
|
|
|
6353
6799
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
6354
6800
|
|
|
6355
6801
|
|
|
6356
|
-
<input id="c-
|
|
6802
|
+
<input id="c-19-components-loading-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
6357
6803
|
|
|
6358
6804
|
|
|
6359
|
-
<input id="c-
|
|
6805
|
+
<input id="c-19-components-loading-props" class="tg tg-props" type="checkbox" hidden />
|
|
6360
6806
|
|
|
6361
6807
|
<div class="panels">
|
|
6362
6808
|
|
|
@@ -6507,9 +6953,9 @@ against the dark background.</div>
|
|
|
6507
6953
|
<div class="title">
|
|
6508
6954
|
<h2><span class="status-dot dot-ok"></span> Modal.Root</h2>
|
|
6509
6955
|
<div class="badges">
|
|
6510
|
-
<label for="c-
|
|
6956
|
+
<label for="c-20-components-modal-props" class="badge ok as-toggle">5 prop types</label>
|
|
6511
6957
|
|
|
6512
|
-
<label for="c-
|
|
6958
|
+
<label for="c-20-components-modal-stories" class="badge ok as-toggle">6 stories</label>
|
|
6513
6959
|
|
|
6514
6960
|
|
|
6515
6961
|
</div>
|
|
@@ -6555,10 +7001,10 @@ import { Modal } from '@agentero/design-system/modal';
|
|
|
6555
7001
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
6556
7002
|
|
|
6557
7003
|
|
|
6558
|
-
<input id="c-
|
|
7004
|
+
<input id="c-20-components-modal-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
6559
7005
|
|
|
6560
7006
|
|
|
6561
|
-
<input id="c-
|
|
7007
|
+
<input id="c-20-components-modal-props" class="tg tg-props" type="checkbox" hidden />
|
|
6562
7008
|
|
|
6563
7009
|
<div class="panels">
|
|
6564
7010
|
|
|
@@ -6755,9 +7201,9 @@ announced as an `alertdialog`. Only the footer actions close it.</div>
|
|
|
6755
7201
|
<div class="title">
|
|
6756
7202
|
<h2><span class="status-dot dot-ok"></span> Pagination</h2>
|
|
6757
7203
|
<div class="badges">
|
|
6758
|
-
<label for="c-
|
|
7204
|
+
<label for="c-21-components-pagination-props" class="badge ok as-toggle">5 prop types</label>
|
|
6759
7205
|
|
|
6760
|
-
<label for="c-
|
|
7206
|
+
<label for="c-21-components-pagination-stories" class="badge ok as-toggle">7 stories</label>
|
|
6761
7207
|
|
|
6762
7208
|
|
|
6763
7209
|
</div>
|
|
@@ -6787,10 +7233,10 @@ const [page, setPage] = useState(1);
|
|
|
6787
7233
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
6788
7234
|
|
|
6789
7235
|
|
|
6790
|
-
<input id="c-
|
|
7236
|
+
<input id="c-21-components-pagination-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
6791
7237
|
|
|
6792
7238
|
|
|
6793
|
-
<input id="c-
|
|
7239
|
+
<input id="c-21-components-pagination-props" class="tg tg-props" type="checkbox" hidden />
|
|
6794
7240
|
|
|
6795
7241
|
<div class="panels">
|
|
6796
7242
|
|
|
@@ -6945,9 +7391,9 @@ entries summary follow along.</div>
|
|
|
6945
7391
|
<div class="title">
|
|
6946
7392
|
<h2><span class="status-dot dot-ok"></span> Popover.Root</h2>
|
|
6947
7393
|
<div class="badges">
|
|
6948
|
-
<label for="c-
|
|
7394
|
+
<label for="c-22-components-popover-props" class="badge ok as-toggle">5 prop types</label>
|
|
6949
7395
|
|
|
6950
|
-
<label for="c-
|
|
7396
|
+
<label for="c-22-components-popover-stories" class="badge ok as-toggle">5 stories</label>
|
|
6951
7397
|
|
|
6952
7398
|
|
|
6953
7399
|
</div>
|
|
@@ -6976,10 +7422,10 @@ import { Popover } from '@agentero/design-system/popover';
|
|
|
6976
7422
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
6977
7423
|
|
|
6978
7424
|
|
|
6979
|
-
<input id="c-
|
|
7425
|
+
<input id="c-22-components-popover-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
6980
7426
|
|
|
6981
7427
|
|
|
6982
|
-
<input id="c-
|
|
7428
|
+
<input id="c-22-components-popover-props" class="tg tg-props" type="checkbox" hidden />
|
|
6983
7429
|
|
|
6984
7430
|
<div class="panels">
|
|
6985
7431
|
|
|
@@ -7178,9 +7624,9 @@ focus returning to its trigger once the modal closes.</div>
|
|
|
7178
7624
|
<div class="title">
|
|
7179
7625
|
<h2><span class="status-dot dot-ok"></span> Progress</h2>
|
|
7180
7626
|
<div class="badges">
|
|
7181
|
-
<label for="c-
|
|
7627
|
+
<label for="c-23-components-progress-props" class="badge ok as-toggle">4 prop types</label>
|
|
7182
7628
|
|
|
7183
|
-
<label for="c-
|
|
7629
|
+
<label for="c-23-components-progress-stories" class="badge ok as-toggle">4 stories</label>
|
|
7184
7630
|
|
|
7185
7631
|
|
|
7186
7632
|
</div>
|
|
@@ -7199,10 +7645,10 @@ with `currentColor`, so recolor it with a plain text class — e.g.
|
|
|
7199
7645
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
7200
7646
|
|
|
7201
7647
|
|
|
7202
|
-
<input id="c-
|
|
7648
|
+
<input id="c-23-components-progress-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
7203
7649
|
|
|
7204
7650
|
|
|
7205
|
-
<input id="c-
|
|
7651
|
+
<input id="c-23-components-progress-props" class="tg tg-props" type="checkbox" hidden />
|
|
7206
7652
|
|
|
7207
7653
|
<div class="panels">
|
|
7208
7654
|
|
|
@@ -7321,7 +7767,7 @@ percentage: number</code></pre>
|
|
|
7321
7767
|
<div class="badges">
|
|
7322
7768
|
|
|
7323
7769
|
|
|
7324
|
-
<label for="c-
|
|
7770
|
+
<label for="c-24-components-skeleton-stories" class="badge ok as-toggle">4 stories</label>
|
|
7325
7771
|
|
|
7326
7772
|
|
|
7327
7773
|
</div>
|
|
@@ -7338,7 +7784,7 @@ shape it with Tailwind classes to mirror the content it stands in for.</div>
|
|
|
7338
7784
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
7339
7785
|
|
|
7340
7786
|
|
|
7341
|
-
<input id="c-
|
|
7787
|
+
<input id="c-24-components-skeleton-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
7342
7788
|
|
|
7343
7789
|
|
|
7344
7790
|
|
|
@@ -7434,9 +7880,9 @@ shape it with Tailwind classes to mirror the content it stands in for.</div>
|
|
|
7434
7880
|
<div class="title">
|
|
7435
7881
|
<h2><span class="status-dot dot-ok"></span> Switch</h2>
|
|
7436
7882
|
<div class="badges">
|
|
7437
|
-
<label for="c-
|
|
7883
|
+
<label for="c-25-components-switch-props" class="badge ok as-toggle">8 prop types</label>
|
|
7438
7884
|
|
|
7439
|
-
<label for="c-
|
|
7885
|
+
<label for="c-25-components-switch-stories" class="badge ok as-toggle">7 stories</label>
|
|
7440
7886
|
|
|
7441
7887
|
|
|
7442
7888
|
</div>
|
|
@@ -7452,10 +7898,10 @@ a Checkbox for a single boolean that applies instantly, and pair it with a
|
|
|
7452
7898
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
7453
7899
|
|
|
7454
7900
|
|
|
7455
|
-
<input id="c-
|
|
7901
|
+
<input id="c-25-components-switch-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
7456
7902
|
|
|
7457
7903
|
|
|
7458
|
-
<input id="c-
|
|
7904
|
+
<input id="c-25-components-switch-props" class="tg tg-props" type="checkbox" hidden />
|
|
7459
7905
|
|
|
7460
7906
|
<div class="panels">
|
|
7461
7907
|
|
|
@@ -7636,9 +8082,9 @@ size?: "sm" | "md"</code></pre>
|
|
|
7636
8082
|
<div class="title">
|
|
7637
8083
|
<h2><span class="status-dot dot-ok"></span> Table.Root</h2>
|
|
7638
8084
|
<div class="badges">
|
|
7639
|
-
<label for="c-
|
|
8085
|
+
<label for="c-26-components-table-props" class="badge ok as-toggle">6 prop types</label>
|
|
7640
8086
|
|
|
7641
|
-
<label for="c-
|
|
8087
|
+
<label for="c-26-components-table-stories" class="badge ok as-toggle">9 stories</label>
|
|
7642
8088
|
|
|
7643
8089
|
|
|
7644
8090
|
</div>
|
|
@@ -7669,10 +8115,10 @@ import { Table } from '@agentero/design-system/table';
|
|
|
7669
8115
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
7670
8116
|
|
|
7671
8117
|
|
|
7672
|
-
<input id="c-
|
|
8118
|
+
<input id="c-26-components-table-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
7673
8119
|
|
|
7674
8120
|
|
|
7675
|
-
<input id="c-
|
|
8121
|
+
<input id="c-26-components-table-props" class="tg tg-props" type="checkbox" hidden />
|
|
7676
8122
|
|
|
7677
8123
|
<div class="panels">
|
|
7678
8124
|
|
|
@@ -7867,9 +8313,9 @@ import { Fragment } from "react";</code></pre>
|
|
|
7867
8313
|
<div class="title">
|
|
7868
8314
|
<h2><span class="status-dot dot-ok"></span> Tabs.Root</h2>
|
|
7869
8315
|
<div class="badges">
|
|
7870
|
-
<label for="c-
|
|
8316
|
+
<label for="c-27-components-tabs-props" class="badge ok as-toggle">9 prop types</label>
|
|
7871
8317
|
|
|
7872
|
-
<label for="c-
|
|
8318
|
+
<label for="c-27-components-tabs-stories" class="badge ok as-toggle">8 stories</label>
|
|
7873
8319
|
|
|
7874
8320
|
|
|
7875
8321
|
</div>
|
|
@@ -7900,10 +8346,10 @@ import { Tabs } from '@agentero/design-system/tabs';
|
|
|
7900
8346
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
7901
8347
|
|
|
7902
8348
|
|
|
7903
|
-
<input id="c-
|
|
8349
|
+
<input id="c-27-components-tabs-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
7904
8350
|
|
|
7905
8351
|
|
|
7906
|
-
<input id="c-
|
|
8352
|
+
<input id="c-27-components-tabs-props" class="tg tg-props" type="checkbox" hidden />
|
|
7907
8353
|
|
|
7908
8354
|
<div class="panels">
|
|
7909
8355
|
|
|
@@ -8124,9 +8570,9 @@ tablist role is announced.</div>
|
|
|
8124
8570
|
<div class="title">
|
|
8125
8571
|
<h2><span class="status-dot dot-ok"></span> Tag</h2>
|
|
8126
8572
|
<div class="badges">
|
|
8127
|
-
<label for="c-
|
|
8573
|
+
<label for="c-28-components-tag-props" class="badge ok as-toggle">8 prop types</label>
|
|
8128
8574
|
|
|
8129
|
-
<label for="c-
|
|
8575
|
+
<label for="c-28-components-tag-stories" class="badge ok as-toggle">12 stories</label>
|
|
8130
8576
|
|
|
8131
8577
|
|
|
8132
8578
|
</div>
|
|
@@ -8145,10 +8591,10 @@ it an interactive link or button, which adds the pointer cursor and hover fill.<
|
|
|
8145
8591
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
8146
8592
|
|
|
8147
8593
|
|
|
8148
|
-
<input id="c-
|
|
8594
|
+
<input id="c-28-components-tag-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
8149
8595
|
|
|
8150
8596
|
|
|
8151
|
-
<input id="c-
|
|
8597
|
+
<input id="c-28-components-tag-props" class="tg tg-props" type="checkbox" hidden />
|
|
8152
8598
|
|
|
8153
8599
|
<div class="panels">
|
|
8154
8600
|
|
|
@@ -8573,9 +9019,9 @@ leading + trailing icons, and icon-only.</div>
|
|
|
8573
9019
|
<div class="title">
|
|
8574
9020
|
<h2><span class="status-dot dot-ok"></span> TextArea</h2>
|
|
8575
9021
|
<div class="badges">
|
|
8576
|
-
<label for="c-
|
|
9022
|
+
<label for="c-29-components-textarea-props" class="badge ok as-toggle">1 prop type</label>
|
|
8577
9023
|
|
|
8578
|
-
<label for="c-
|
|
9024
|
+
<label for="c-29-components-textarea-stories" class="badge ok as-toggle">6 stories</label>
|
|
8579
9025
|
|
|
8580
9026
|
|
|
8581
9027
|
</div>
|
|
@@ -8592,10 +9038,10 @@ states. It wires nothing on its own: `id`, `aria-invalid` and
|
|
|
8592
9038
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
8593
9039
|
|
|
8594
9040
|
|
|
8595
|
-
<input id="c-
|
|
9041
|
+
<input id="c-29-components-textarea-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
8596
9042
|
|
|
8597
9043
|
|
|
8598
|
-
<input id="c-
|
|
9044
|
+
<input id="c-29-components-textarea-props" class="tg tg-props" type="checkbox" hidden />
|
|
8599
9045
|
|
|
8600
9046
|
<div class="panels">
|
|
8601
9047
|
|
|
@@ -8605,48 +9051,11 @@ states. It wires nothing on its own: `id`, `aria-invalid` and
|
|
|
8605
9051
|
<div class="note ok">
|
|
8606
9052
|
<div class="row">
|
|
8607
9053
|
<span class="ex-name">Prop types <small>(react-component-meta)</small></span>
|
|
8608
|
-
<span class="badge ok">
|
|
9054
|
+
<span class="badge ok">1 prop type</span>
|
|
8609
9055
|
</div>
|
|
8610
9056
|
<pre><code>Component: src/textarea/textarea.tsx::TextArea</code></pre>
|
|
8611
9057
|
<pre><code>Props:</code></pre>
|
|
8612
9058
|
<pre><code>/**
|
|
8613
|
-
* Indicates the entered value does not conform to the format expected by the application.
|
|
8614
|
-
* Drives the destructive border and is what assistive technology announces.
|
|
8615
|
-
*/
|
|
8616
|
-
aria-invalid?: boolean | "true" | "false" | "grammar" | "spelling" | undefined
|
|
8617
|
-
|
|
8618
|
-
/**
|
|
8619
|
-
* Blocks interaction and drops the value from the submission. Use `readOnly`
|
|
8620
|
-
* when the user still needs to read or copy it.
|
|
8621
|
-
*/
|
|
8622
|
-
disabled?: boolean
|
|
8623
|
-
|
|
8624
|
-
/**
|
|
8625
|
-
* Caps the value in UTF-16 code units: typing stops there and a paste is cut.
|
|
8626
|
-
*/
|
|
8627
|
-
maxLength?: number
|
|
8628
|
-
|
|
8629
|
-
/**
|
|
8630
|
-
* Hint shown while empty; never a substitute for a label.
|
|
8631
|
-
*/
|
|
8632
|
-
placeholder?: string
|
|
8633
|
-
|
|
8634
|
-
/**
|
|
8635
|
-
* Focusable, copyable and submitted, but not editable.
|
|
8636
|
-
*/
|
|
8637
|
-
readOnly?: boolean
|
|
8638
|
-
|
|
8639
|
-
/**
|
|
8640
|
-
* Marks the control required for both the browser and assistive technology.
|
|
8641
|
-
*/
|
|
8642
|
-
required?: boolean
|
|
8643
|
-
|
|
8644
|
-
/**
|
|
8645
|
-
* Rows visible at rest when three are not enough.
|
|
8646
|
-
*/
|
|
8647
|
-
rows?: number
|
|
8648
|
-
|
|
8649
|
-
/**
|
|
8650
9059
|
* Defaults to `'md'`. The first row measures one Input of the same size and
|
|
8651
9060
|
* three rows show at rest: `sm` 76px, `md` 84px, `lg` 96px (`lg` also raises
|
|
8652
9061
|
* the text to `base` and the radius to `lg`).
|
|
@@ -8764,9 +9173,9 @@ size and the minimum height shows three rows.</div>
|
|
|
8764
9173
|
<div class="title">
|
|
8765
9174
|
<h2><span class="status-dot dot-ok"></span> Toast</h2>
|
|
8766
9175
|
<div class="badges">
|
|
8767
|
-
<label for="c-
|
|
9176
|
+
<label for="c-30-components-toast-props" class="badge ok as-toggle">11 prop types</label>
|
|
8768
9177
|
|
|
8769
|
-
<label for="c-
|
|
9178
|
+
<label for="c-30-components-toast-stories" class="badge ok as-toggle">11 stories</label>
|
|
8770
9179
|
|
|
8771
9180
|
|
|
8772
9181
|
</div>
|
|
@@ -8785,10 +9194,10 @@ common feedback patterns.</div>
|
|
|
8785
9194
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
8786
9195
|
|
|
8787
9196
|
|
|
8788
|
-
<input id="c-
|
|
9197
|
+
<input id="c-30-components-toast-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
8789
9198
|
|
|
8790
9199
|
|
|
8791
|
-
<input id="c-
|
|
9200
|
+
<input id="c-30-components-toast-props" class="tg tg-props" type="checkbox" hidden />
|
|
8792
9201
|
|
|
8793
9202
|
<div class="panels">
|
|
8794
9203
|
|
|
@@ -9217,9 +9626,9 @@ action (e.g., a sync icon for a sync-in-progress toast).</div>
|
|
|
9217
9626
|
<div class="title">
|
|
9218
9627
|
<h2><span class="status-dot dot-ok"></span> Tooltip</h2>
|
|
9219
9628
|
<div class="badges">
|
|
9220
|
-
<label for="c-
|
|
9629
|
+
<label for="c-31-components-tooltip-props" class="badge ok as-toggle">12 prop types</label>
|
|
9221
9630
|
|
|
9222
|
-
<label for="c-
|
|
9631
|
+
<label for="c-31-components-tooltip-stories" class="badge ok as-toggle">5 stories</label>
|
|
9223
9632
|
|
|
9224
9633
|
|
|
9225
9634
|
</div>
|
|
@@ -9238,10 +9647,10 @@ on hover or focus.</div>
|
|
|
9238
9647
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
9239
9648
|
|
|
9240
9649
|
|
|
9241
|
-
<input id="c-
|
|
9650
|
+
<input id="c-31-components-tooltip-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
9242
9651
|
|
|
9243
9652
|
|
|
9244
|
-
<input id="c-
|
|
9653
|
+
<input id="c-31-components-tooltip-props" class="tg tg-props" type="checkbox" hidden />
|
|
9245
9654
|
|
|
9246
9655
|
<div class="panels">
|
|
9247
9656
|
|
|
@@ -9299,7 +9708,7 @@ open?: boolean
|
|
|
9299
9708
|
/**
|
|
9300
9709
|
* Preferred side of the trigger; flips on collision. Defaults to `'top'`.
|
|
9301
9710
|
*/
|
|
9302
|
-
side?: "
|
|
9711
|
+
side?: "top" | "bottom" | "left" | "right" = 'top'
|
|
9303
9712
|
|
|
9304
9713
|
/**
|
|
9305
9714
|
* Distance in pixels between the tooltip and its trigger. Defaults to `4`.
|
|
@@ -9413,9 +9822,9 @@ sideOffset?: number = 4</code></pre>
|
|
|
9413
9822
|
<div class="title">
|
|
9414
9823
|
<h2><span class="status-dot dot-ok"></span> ValidationList</h2>
|
|
9415
9824
|
<div class="badges">
|
|
9416
|
-
<label for="c-
|
|
9825
|
+
<label for="c-32-components-validationlist-props" class="badge ok as-toggle">2 prop types</label>
|
|
9417
9826
|
|
|
9418
|
-
<label for="c-
|
|
9827
|
+
<label for="c-32-components-validationlist-stories" class="badge ok as-toggle">4 stories</label>
|
|
9419
9828
|
|
|
9420
9829
|
|
|
9421
9830
|
</div>
|
|
@@ -9436,10 +9845,10 @@ your form validation; it does not own the input or block submission.</div>
|
|
|
9436
9845
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
9437
9846
|
|
|
9438
9847
|
|
|
9439
|
-
<input id="c-
|
|
9848
|
+
<input id="c-32-components-validationlist-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
9440
9849
|
|
|
9441
9850
|
|
|
9442
|
-
<input id="c-
|
|
9851
|
+
<input id="c-32-components-validationlist-props" class="tg tg-props" type="checkbox" hidden />
|
|
9443
9852
|
|
|
9444
9853
|
<div class="panels">
|
|
9445
9854
|
|