ionbase-ui 0.22.0 → 0.24.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/dist/components/AgentStop.d.ts +58 -0
- package/dist/components/AgentStop.d.ts.map +1 -0
- package/dist/components/AgentStop.js +82 -0
- package/dist/components/AgentStop.js.map +1 -0
- package/dist/components/ApprovalGate.d.ts +72 -0
- package/dist/components/ApprovalGate.d.ts.map +1 -0
- package/dist/components/ApprovalGate.js +68 -0
- package/dist/components/ApprovalGate.js.map +1 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/figma-descriptions.json +147 -0
- package/dist/figma-map.json +3 -1
- package/dist/meta/AgentStop.json +164 -0
- package/dist/meta/ApprovalGate.json +255 -0
- package/dist/meta/Avatar.json +2 -2
- package/dist/meta/AvatarGroup.json +2 -2
- package/dist/meta/PhoneInput.json +36 -36
- package/dist/meta/components.json +460 -41
- package/dist/meta/contrast.json +828 -14
- package/dist/meta/index.json +37 -5
- package/dist/meta/patterns/index.json +1 -1
- package/dist/styles/agent-stop.css +109 -0
- package/dist/styles/approval-gate.css +181 -0
- package/dist/styles/index.css +30 -0
- package/llms.txt +2 -2
- package/package.json +4 -3
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AgentStop",
|
|
3
|
+
"source": "src/components/AgentStop.tsx",
|
|
4
|
+
"propsType": "AgentStopProps",
|
|
5
|
+
"description": "AgentStop — the always-visible way to end a run.\n\nNOT OPTIONAL, AND NOT BEHIND A MENU. A user who cannot stop an agent is\nwatching it, not supervising it. Human oversight of an automated process is\na compliance surface in regulated contexts, not a UX preference, and the\ncontrol that provides it has to be present and reachable at the moment it is\nwanted — not two clicks into an overflow menu.\n\nWHY IT IS NOT JUST `<Button variant=\"destructive\">`\n\nThree things it owns that a Button does not:\n\n It keeps its place while stopping. A control that vanishes the instant it\n is pressed leaves the user unsure whether the press registered, and the\n run is usually still going. It stays, relabels, and disables — the layout\n does not move.\n\n It announces. The label change is only announced to a screen reader if the\n button happens to hold focus, which it usually does not when a run was\n started elsewhere. A polite live region says \"Stopping\" once.\n\n It is not destructive-red. Stopping is a normal, expected, reversible-in-\n spirit action — you can run it again. Colouring it like `delete` teaches\n hesitation about the one control that must never be hesitated over.\n\nWHAT IT DOES NOT DO. It does not stop anything. It reports intent; the\ncaller aborts the request, closes the stream and settles the state. A stop\nbutton that resolves optimistically while tokens keep arriving is worse than\nnone, because it lies about a guarantee the user is relying on.",
|
|
6
|
+
"import": "import { AgentStop } from 'ionbase-ui';",
|
|
7
|
+
"status": "stable",
|
|
8
|
+
"summary": "The always-visible way to end a running agent. Not optional, and not behind a menu.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"anything runs long enough that a person might want it to stop — a generation, a tool chain, a batch job",
|
|
11
|
+
"the run was started by the user and is still going"
|
|
12
|
+
],
|
|
13
|
+
"useInstead": [
|
|
14
|
+
{
|
|
15
|
+
"when": "the action is instant and there is nothing to interrupt",
|
|
16
|
+
"use": "Button"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"when": "you are asking permission before something happens rather than ending something already happening",
|
|
20
|
+
"use": "ApprovalGate"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"when": "the thing to undo has already finished",
|
|
24
|
+
"use": "Toast",
|
|
25
|
+
"why": "an undo affordance belongs with the confirmation of what was done"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"variants": {
|
|
29
|
+
"size": {
|
|
30
|
+
"sm": {
|
|
31
|
+
"use": "inside a toolbar or beside an inline activity row"
|
|
32
|
+
},
|
|
33
|
+
"md": {
|
|
34
|
+
"use": "the default"
|
|
35
|
+
},
|
|
36
|
+
"lg": {
|
|
37
|
+
"use": "a full-width run surface where stopping is the primary available action"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"a11y": {
|
|
42
|
+
"role": "button",
|
|
43
|
+
"guarantees": [
|
|
44
|
+
"the control keeps its place while stopping — it relabels and disables rather than disappearing, so the layout does not move under the pointer",
|
|
45
|
+
"the transition to stopping is announced once through a polite live region, because the label change alone is only heard if the button happens to hold focus",
|
|
46
|
+
"`stopOnEscape` ignores Escape raised inside a dialog, so closing a modal never cancels a background run"
|
|
47
|
+
],
|
|
48
|
+
"requires": [
|
|
49
|
+
"keeping it rendered and visible for the whole run — a stop control that scrolls away or hides in an overflow menu is the failure this component exists to prevent"
|
|
50
|
+
],
|
|
51
|
+
"notes": [
|
|
52
|
+
"It does not stop anything. It reports intent; aborting the request and settling the state is the caller's. A stop that resolves optimistically while output keeps arriving lies about the one guarantee the user is relying on."
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"antiPatterns": [
|
|
56
|
+
{
|
|
57
|
+
"dont": "putting the stop control in an overflow menu",
|
|
58
|
+
"why": "a user who cannot reach it is watching the agent, not supervising it"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"dont": "disabling it while the run is going",
|
|
62
|
+
"why": "the only correct disabled state is `isStopping` — after the request, never before"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"dont": "unmounting it the moment it is pressed",
|
|
66
|
+
"do": "pass `isStopping`",
|
|
67
|
+
"why": "the run is usually still going, and a control that vanishes leaves the user unsure the press registered"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"dont": "styling it as destructive",
|
|
71
|
+
"why": "stopping is normal and repeatable; red teaches hesitation about the one control that must never be hesitated over"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"dont": "`stopOnEscape` on a page with modals over the run",
|
|
75
|
+
"why": "Escape already means dismiss to every overlay in this system"
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
"stylesheet": "src/styles/agent-stop.css",
|
|
79
|
+
"tokens": [
|
|
80
|
+
"--border-default",
|
|
81
|
+
"--border-error",
|
|
82
|
+
"--border-focus",
|
|
83
|
+
"--border-strong",
|
|
84
|
+
"--border-width-default",
|
|
85
|
+
"--border-width-thick",
|
|
86
|
+
"--font-family-sans",
|
|
87
|
+
"--font-weight-medium",
|
|
88
|
+
"--icon-size-md",
|
|
89
|
+
"--icon-size-sm",
|
|
90
|
+
"--icon-size-xs",
|
|
91
|
+
"--ion-duration-base",
|
|
92
|
+
"--ion-ease-out",
|
|
93
|
+
"--radius-md",
|
|
94
|
+
"--spacing-12",
|
|
95
|
+
"--spacing-16",
|
|
96
|
+
"--spacing-20",
|
|
97
|
+
"--spacing-32",
|
|
98
|
+
"--spacing-4",
|
|
99
|
+
"--spacing-40",
|
|
100
|
+
"--spacing-48",
|
|
101
|
+
"--spacing-8",
|
|
102
|
+
"--surface-default",
|
|
103
|
+
"--surface-error-subtle",
|
|
104
|
+
"--surface-error-subtle-hover",
|
|
105
|
+
"--surface-muted",
|
|
106
|
+
"--text-default",
|
|
107
|
+
"--text-error",
|
|
108
|
+
"--text-secondary",
|
|
109
|
+
"--type-body",
|
|
110
|
+
"--type-body-lg",
|
|
111
|
+
"--type-body-lg-line-height",
|
|
112
|
+
"--type-body-line-height",
|
|
113
|
+
"--type-body-sm",
|
|
114
|
+
"--type-body-sm-line-height"
|
|
115
|
+
],
|
|
116
|
+
"props": {
|
|
117
|
+
"onStop": {
|
|
118
|
+
"type": "() => void",
|
|
119
|
+
"required": true,
|
|
120
|
+
"origin": "own",
|
|
121
|
+
"description": "Called when the user asks the run to stop."
|
|
122
|
+
},
|
|
123
|
+
"isStopping": {
|
|
124
|
+
"type": "boolean | undefined",
|
|
125
|
+
"required": false,
|
|
126
|
+
"origin": "own",
|
|
127
|
+
"description": "The request is in flight. The control stays visible and keeps its place;\nit does not disappear while the thing it cancels is still running."
|
|
128
|
+
},
|
|
129
|
+
"label": {
|
|
130
|
+
"type": "string | undefined",
|
|
131
|
+
"required": false,
|
|
132
|
+
"origin": "own",
|
|
133
|
+
"description": "Visible label."
|
|
134
|
+
},
|
|
135
|
+
"stoppingLabel": {
|
|
136
|
+
"type": "string | undefined",
|
|
137
|
+
"required": false,
|
|
138
|
+
"origin": "own",
|
|
139
|
+
"description": "Visible label once `isStopping` is set."
|
|
140
|
+
},
|
|
141
|
+
"size": {
|
|
142
|
+
"type": "AgentStopSize | undefined",
|
|
143
|
+
"required": false,
|
|
144
|
+
"origin": "own",
|
|
145
|
+
"values": [
|
|
146
|
+
"sm",
|
|
147
|
+
"md",
|
|
148
|
+
"lg"
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
"stopOnEscape": {
|
|
152
|
+
"type": "boolean | undefined",
|
|
153
|
+
"required": false,
|
|
154
|
+
"origin": "own",
|
|
155
|
+
"description": "Bind Escape, at the document, to stop the run.\n\nOff by default and deliberately so: Escape already means \"dismiss the\nthing in front of me\" to every modal, popover and menu in this system, and\na document-level handler would cancel a background run when the user meant\nto close a dialog. Turn it on only where the run IS the foreground task."
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"propCounts": {
|
|
159
|
+
"own": 6,
|
|
160
|
+
"aria": 0,
|
|
161
|
+
"dom": 286,
|
|
162
|
+
"other": 0
|
|
163
|
+
}
|
|
164
|
+
}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ApprovalGate",
|
|
3
|
+
"source": "src/components/ApprovalGate.tsx",
|
|
4
|
+
"propsType": "ApprovalGateProps",
|
|
5
|
+
"description": "ApprovalGate — a proposed action, held until a person decides.\n\nThe human-in-the-loop control. An agent proposes; this is where a person\napproves, rejects, or amends before anything happens. In regulated contexts\ndemonstrable human oversight is a compliance surface rather than a nicety,\nwhich is why this is a first-class component and not a Modal with two\nbuttons in it.\n\nIT ENFORCES NOTHING, AND SAYING SO IS THE POINT\n\nThis renders a decision. It does not gate execution — the caller does, by not\nacting until `onApprove` fires. A component that *looked* like it enforced a\npolicy would be the worst possible thing to ship here: teams would rely on a\nguarantee that lives entirely in their own call site. `risk` changes emphasis\nand nothing else, for the same reason.\n\nNOT A MODAL, DELIBERATELY\n\nA modal steals focus and hides the page. But the page is the evidence: the\nuser needs the plan, the diff, the tool call and the context in front of them\nwhile deciding. This sits inline, keeps everything visible, and never\ntraps focus — an approval a user was rushed through is not oversight.\n\nNEITHER BUTTON IS FOCUSED ON MOUNT. Autofocusing approve turns a decision\ninto an Enter keypress on a page the user has not read. Focus is moved to the\nregion's heading instead, so a screen-reader user lands on what is being\nasked rather than on the answer.\n\nTHE RESOLVED STATES ARE NOT DECORATION. `approved`, `rejected` and `expired`\nreplace the actions with what happened, so the record of the decision stays\non the page. `expired` exists because an approval request that nobody answers\nis the common real outcome, and a gate that sits pending for ever is\nindistinguishable from one that is broken.",
|
|
6
|
+
"import": "import { ApprovalGate } from 'ionbase-ui';",
|
|
7
|
+
"status": "stable",
|
|
8
|
+
"summary": "A proposed action held until a person approves, rejects or amends it. It renders the decision; it does not enforce it.",
|
|
9
|
+
"useWhen": [
|
|
10
|
+
"an agent proposes something with consequences — spending, sending, deleting, deploying, changing permissions",
|
|
11
|
+
"a regulated or audited process needs demonstrable human oversight at a specific point",
|
|
12
|
+
"the proposal is worth showing in full, in context, before it runs"
|
|
13
|
+
],
|
|
14
|
+
"useInstead": [
|
|
15
|
+
{
|
|
16
|
+
"when": "the action is already happening and needs stopping",
|
|
17
|
+
"use": "AgentStop"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"when": "a person initiated the action themselves and only needs to confirm it",
|
|
21
|
+
"use": "Modal",
|
|
22
|
+
"why": "confirming your own request is a dialog; reviewing something proposed for you is a decision"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"when": "you are reporting what happened rather than asking",
|
|
26
|
+
"use": "Alert"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"variants": {
|
|
30
|
+
"risk": {
|
|
31
|
+
"low": {
|
|
32
|
+
"use": "reversible and cheap — a draft, a local edit. Neutral surface"
|
|
33
|
+
},
|
|
34
|
+
"medium": {
|
|
35
|
+
"use": "the default. Real but recoverable consequences"
|
|
36
|
+
},
|
|
37
|
+
"high": {
|
|
38
|
+
"use": "spending, sending externally, deleting, granting access. Warning surface, deliberately not error"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"status": {
|
|
42
|
+
"pending": {
|
|
43
|
+
"use": "the default, and the only state with actions"
|
|
44
|
+
},
|
|
45
|
+
"approved": {
|
|
46
|
+
"use": "resolved — the actions are replaced by the record"
|
|
47
|
+
},
|
|
48
|
+
"rejected": {
|
|
49
|
+
"use": "resolved, declined"
|
|
50
|
+
},
|
|
51
|
+
"expired": {
|
|
52
|
+
"use": "nobody answered. The common real outcome, and the reason a gate cannot sit pending for ever"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"slots": {
|
|
57
|
+
"title": {
|
|
58
|
+
"accepts": "text",
|
|
59
|
+
"note": "required, and the region's accessible name. Name the action and its object — \"Delete 14 projects\", never \"Confirm action\""
|
|
60
|
+
},
|
|
61
|
+
"children": {
|
|
62
|
+
"accepts": "any",
|
|
63
|
+
"note": "the evidence: the plan, the diff, the tool call. This is what the person is deciding about"
|
|
64
|
+
},
|
|
65
|
+
"resolution": {
|
|
66
|
+
"accepts": "text",
|
|
67
|
+
"note": "shown in place of the actions once resolved; defaults to the status"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"a11y": {
|
|
71
|
+
"role": "region, named by its title",
|
|
72
|
+
"guarantees": [
|
|
73
|
+
"neither button is focused on mount — autofocusing approve turns a decision into an Enter keypress on an unread page",
|
|
74
|
+
"the title is programmatically focusable, so the caller can move focus to the question rather than to an answer",
|
|
75
|
+
"reject precedes approve in the DOM, so a keyboard reaches the safe answer first",
|
|
76
|
+
"resolution is announced once through a polite live region",
|
|
77
|
+
"focus is never trapped: an approval a user was rushed through is not oversight"
|
|
78
|
+
],
|
|
79
|
+
"requires": [
|
|
80
|
+
"not acting until `onApprove` fires — this component gates nothing on its own",
|
|
81
|
+
"a `title` that names the action and its object"
|
|
82
|
+
],
|
|
83
|
+
"notes": [
|
|
84
|
+
"`risk` changes emphasis and nothing else. It does not add confirmation, does not disable anything, and must never be read as a policy the component enforces."
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"antiPatterns": [
|
|
88
|
+
{
|
|
89
|
+
"dont": "treating the gate as the enforcement point",
|
|
90
|
+
"why": "it renders a decision. If your code acts before `onApprove`, there is no gate — only a picture of one"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"dont": "putting it in a Modal",
|
|
94
|
+
"why": "the page is the evidence; hiding it to ask about it removes what the decision needs"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"dont": "autofocusing the approve button",
|
|
98
|
+
"why": "Enter on an unread page is not oversight, and it is exactly what an audit will look for"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"dont": "an approve-only gate with no reject",
|
|
102
|
+
"why": "a decision with one answer is a notification wearing a button"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"dont": "`onEdit` when the proposal cannot actually be amended",
|
|
106
|
+
"why": "an edit button that discards the edit is worse than no edit button"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"dont": "leaving gates pending indefinitely",
|
|
110
|
+
"do": "the `expired` status",
|
|
111
|
+
"why": "a gate nobody answered is indistinguishable from one that is broken"
|
|
112
|
+
}
|
|
113
|
+
],
|
|
114
|
+
"stylesheet": "src/styles/approval-gate.css",
|
|
115
|
+
"tokens": [
|
|
116
|
+
"--border-default",
|
|
117
|
+
"--border-disabled",
|
|
118
|
+
"--border-focus",
|
|
119
|
+
"--border-information",
|
|
120
|
+
"--border-strong",
|
|
121
|
+
"--border-success",
|
|
122
|
+
"--border-warning-strong",
|
|
123
|
+
"--border-width-default",
|
|
124
|
+
"--border-width-thick",
|
|
125
|
+
"--border-width-thicker",
|
|
126
|
+
"--font-family-sans",
|
|
127
|
+
"--font-weight-medium",
|
|
128
|
+
"--font-weight-semibold",
|
|
129
|
+
"--icon-information",
|
|
130
|
+
"--icon-secondary",
|
|
131
|
+
"--icon-size-md",
|
|
132
|
+
"--icon-success",
|
|
133
|
+
"--icon-tertiary",
|
|
134
|
+
"--icon-warning",
|
|
135
|
+
"--ion-approval-accent",
|
|
136
|
+
"--ion-approval-border",
|
|
137
|
+
"--ion-approval-icon",
|
|
138
|
+
"--ion-approval-surface",
|
|
139
|
+
"--ion-duration-base",
|
|
140
|
+
"--ion-ease-out",
|
|
141
|
+
"--radius-md",
|
|
142
|
+
"--radius-sm",
|
|
143
|
+
"--radius-xs",
|
|
144
|
+
"--spacing-12",
|
|
145
|
+
"--spacing-16",
|
|
146
|
+
"--spacing-32",
|
|
147
|
+
"--spacing-4",
|
|
148
|
+
"--spacing-8",
|
|
149
|
+
"--surface-default",
|
|
150
|
+
"--surface-disabled",
|
|
151
|
+
"--surface-hover",
|
|
152
|
+
"--surface-information-subtle",
|
|
153
|
+
"--surface-muted",
|
|
154
|
+
"--surface-primary",
|
|
155
|
+
"--surface-primary-hover",
|
|
156
|
+
"--surface-warning-subtle",
|
|
157
|
+
"--text-default",
|
|
158
|
+
"--text-disabled",
|
|
159
|
+
"--text-information",
|
|
160
|
+
"--text-on-color",
|
|
161
|
+
"--text-secondary",
|
|
162
|
+
"--text-success",
|
|
163
|
+
"--text-warning",
|
|
164
|
+
"--type-body",
|
|
165
|
+
"--type-body-line-height",
|
|
166
|
+
"--type-body-sm",
|
|
167
|
+
"--type-body-sm-line-height"
|
|
168
|
+
],
|
|
169
|
+
"props": {
|
|
170
|
+
"title": {
|
|
171
|
+
"type": "React.ReactNode",
|
|
172
|
+
"required": true,
|
|
173
|
+
"origin": "own",
|
|
174
|
+
"description": "What is being approved, stated as the action and its object — \"Delete 14\nprojects\", not \"Confirm action\". Required: it is the region's accessible\nname, and a decision the user cannot name is not a decision."
|
|
175
|
+
},
|
|
176
|
+
"children": {
|
|
177
|
+
"type": "React.ReactNode",
|
|
178
|
+
"required": false,
|
|
179
|
+
"origin": "own",
|
|
180
|
+
"description": "Why it stopped here, and what happens on approval."
|
|
181
|
+
},
|
|
182
|
+
"risk": {
|
|
183
|
+
"type": "ApprovalGateRisk | undefined",
|
|
184
|
+
"required": false,
|
|
185
|
+
"origin": "own",
|
|
186
|
+
"description": "How much is at stake. Drives emphasis only — it does NOT change what the\ncomponent enforces, because the component enforces nothing.",
|
|
187
|
+
"values": [
|
|
188
|
+
"low",
|
|
189
|
+
"medium",
|
|
190
|
+
"high"
|
|
191
|
+
]
|
|
192
|
+
},
|
|
193
|
+
"status": {
|
|
194
|
+
"type": "ApprovalGateStatus | undefined",
|
|
195
|
+
"required": false,
|
|
196
|
+
"origin": "own",
|
|
197
|
+
"description": "Where the decision has got to. `pending` is the only state with buttons.",
|
|
198
|
+
"values": [
|
|
199
|
+
"pending",
|
|
200
|
+
"approved",
|
|
201
|
+
"rejected",
|
|
202
|
+
"expired"
|
|
203
|
+
]
|
|
204
|
+
},
|
|
205
|
+
"onApprove": {
|
|
206
|
+
"type": "(() => void) | undefined",
|
|
207
|
+
"required": false,
|
|
208
|
+
"origin": "own"
|
|
209
|
+
},
|
|
210
|
+
"onReject": {
|
|
211
|
+
"type": "(() => void) | undefined",
|
|
212
|
+
"required": false,
|
|
213
|
+
"origin": "own"
|
|
214
|
+
},
|
|
215
|
+
"onEdit": {
|
|
216
|
+
"type": "(() => void) | undefined",
|
|
217
|
+
"required": false,
|
|
218
|
+
"origin": "own",
|
|
219
|
+
"description": "Offer \"edit\" as a third way out. Omit it when the proposal cannot be\namended — an approve/reject pair the user cannot influence is honest;\nan edit button that discards their edit is not."
|
|
220
|
+
},
|
|
221
|
+
"approveLabel": {
|
|
222
|
+
"type": "string | undefined",
|
|
223
|
+
"required": false,
|
|
224
|
+
"origin": "own"
|
|
225
|
+
},
|
|
226
|
+
"rejectLabel": {
|
|
227
|
+
"type": "string | undefined",
|
|
228
|
+
"required": false,
|
|
229
|
+
"origin": "own"
|
|
230
|
+
},
|
|
231
|
+
"editLabel": {
|
|
232
|
+
"type": "string | undefined",
|
|
233
|
+
"required": false,
|
|
234
|
+
"origin": "own"
|
|
235
|
+
},
|
|
236
|
+
"isSubmitting": {
|
|
237
|
+
"type": "boolean | undefined",
|
|
238
|
+
"required": false,
|
|
239
|
+
"origin": "own",
|
|
240
|
+
"description": "A decision is in flight. Both actions disable; neither disappears."
|
|
241
|
+
},
|
|
242
|
+
"resolution": {
|
|
243
|
+
"type": "React.ReactNode",
|
|
244
|
+
"required": false,
|
|
245
|
+
"origin": "own",
|
|
246
|
+
"description": "Shown in place of the actions once the decision is made."
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
"propCounts": {
|
|
250
|
+
"own": 12,
|
|
251
|
+
"aria": 0,
|
|
252
|
+
"dom": 275,
|
|
253
|
+
"other": 0
|
|
254
|
+
}
|
|
255
|
+
}
|
package/dist/meta/Avatar.json
CHANGED
|
@@ -122,6 +122,42 @@
|
|
|
122
122
|
"origin": "own",
|
|
123
123
|
"description": "Spread onto the dial-code `<button>`. This is how a country picker gets\nattached — see the note on scope below."
|
|
124
124
|
},
|
|
125
|
+
"type": {
|
|
126
|
+
"type": "(string & {}) | \"search\" | \"text\" | \"url\" | \"tel\" | \"email\" | \"password\" | undefined",
|
|
127
|
+
"required": false,
|
|
128
|
+
"origin": "aria",
|
|
129
|
+
"description": "The type of input to render. See\n[MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdeftype).",
|
|
130
|
+
"tags": {
|
|
131
|
+
"default": "'text'"
|
|
132
|
+
},
|
|
133
|
+
"default": "tel"
|
|
134
|
+
},
|
|
135
|
+
"disabled": {
|
|
136
|
+
"type": "boolean | undefined",
|
|
137
|
+
"required": false,
|
|
138
|
+
"origin": "own",
|
|
139
|
+
"tags": {
|
|
140
|
+
"deprecated": "Use `isDisabled`. Accepted as an alias for one minor version."
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"form": {
|
|
144
|
+
"type": "string | undefined",
|
|
145
|
+
"required": false,
|
|
146
|
+
"origin": "aria",
|
|
147
|
+
"description": "The `<form>` element to associate the input with.\nThe value of this attribute must be the id of a `<form>` in the same document.\nSee [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input#form)."
|
|
148
|
+
},
|
|
149
|
+
"name": {
|
|
150
|
+
"type": "string | undefined",
|
|
151
|
+
"required": false,
|
|
152
|
+
"origin": "aria",
|
|
153
|
+
"description": "The name of the input element, used when submitting an HTML form. See\n[MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefname)."
|
|
154
|
+
},
|
|
155
|
+
"value": {
|
|
156
|
+
"type": "string | undefined",
|
|
157
|
+
"required": false,
|
|
158
|
+
"origin": "aria",
|
|
159
|
+
"description": "The current value (controlled)."
|
|
160
|
+
},
|
|
125
161
|
"defaultValue": {
|
|
126
162
|
"type": "string | undefined",
|
|
127
163
|
"required": false,
|
|
@@ -359,36 +395,12 @@
|
|
|
359
395
|
],
|
|
360
396
|
"default": "md"
|
|
361
397
|
},
|
|
362
|
-
"type": {
|
|
363
|
-
"type": "(string & {}) | \"search\" | \"text\" | \"url\" | \"tel\" | \"email\" | \"password\" | undefined",
|
|
364
|
-
"required": false,
|
|
365
|
-
"origin": "aria",
|
|
366
|
-
"description": "The type of input to render. See\n[MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdeftype).",
|
|
367
|
-
"tags": {
|
|
368
|
-
"default": "'text'"
|
|
369
|
-
},
|
|
370
|
-
"default": "tel"
|
|
371
|
-
},
|
|
372
398
|
"autoComplete": {
|
|
373
399
|
"type": "string | undefined",
|
|
374
400
|
"required": false,
|
|
375
401
|
"origin": "aria",
|
|
376
402
|
"description": "Describes the type of autocomplete functionality the input should provide if any. See\n[MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefautocomplete)."
|
|
377
403
|
},
|
|
378
|
-
"disabled": {
|
|
379
|
-
"type": "boolean | undefined",
|
|
380
|
-
"required": false,
|
|
381
|
-
"origin": "own",
|
|
382
|
-
"tags": {
|
|
383
|
-
"deprecated": "Use `isDisabled`. Accepted as an alias for one minor version."
|
|
384
|
-
}
|
|
385
|
-
},
|
|
386
|
-
"form": {
|
|
387
|
-
"type": "string | undefined",
|
|
388
|
-
"required": false,
|
|
389
|
-
"origin": "aria",
|
|
390
|
-
"description": "The `<form>` element to associate the input with.\nThe value of this attribute must be the id of a `<form>` in the same document.\nSee [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input#form)."
|
|
391
|
-
},
|
|
392
404
|
"maxLength": {
|
|
393
405
|
"type": "number | undefined",
|
|
394
406
|
"required": false,
|
|
@@ -401,12 +413,6 @@
|
|
|
401
413
|
"origin": "aria",
|
|
402
414
|
"description": "The minimum number of characters required by the input. See\n[MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefminlength)."
|
|
403
415
|
},
|
|
404
|
-
"name": {
|
|
405
|
-
"type": "string | undefined",
|
|
406
|
-
"required": false,
|
|
407
|
-
"origin": "aria",
|
|
408
|
-
"description": "The name of the input element, used when submitting an HTML form. See\n[MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefname)."
|
|
409
|
-
},
|
|
410
416
|
"pattern": {
|
|
411
417
|
"type": "string | undefined",
|
|
412
418
|
"required": false,
|
|
@@ -419,12 +425,6 @@
|
|
|
419
425
|
"origin": "aria",
|
|
420
426
|
"description": "Temporary text that occupies the text input when it is empty."
|
|
421
427
|
},
|
|
422
|
-
"value": {
|
|
423
|
-
"type": "string | undefined",
|
|
424
|
-
"required": false,
|
|
425
|
-
"origin": "aria",
|
|
426
|
-
"description": "The current value (controlled)."
|
|
427
|
-
},
|
|
428
428
|
"isDisabled": {
|
|
429
429
|
"type": "boolean | undefined",
|
|
430
430
|
"required": false,
|