@agentero/design-system 0.28.0 → 0.29.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/mcp/manifests/components.html +527 -65
- package/mcp/manifests/components.json +534 -1
- package/package.json +13 -1
- package/src/field/context.d.ts +8 -0
- package/src/field/field.d.ts +3 -1
- package/src/field/field.js +7 -4
- package/src/form/form.d.ts +60 -0
- package/src/form/form.js +16 -0
- package/src/form/index.d.ts +7 -0
- package/src/form/index.js +5 -0
- package/src/form-text/form-text.d.ts +136 -0
- package/src/form-text/form-text.js +40 -0
- package/src/form-text/index.d.ts +2 -0
- package/src/form-text/index.js +2 -0
|
@@ -588,13 +588,13 @@
|
|
|
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">31 components ok</span><span class="filter-pill ok" aria-disabled="true">250 stories ok</span></div>
|
|
592
592
|
</div>
|
|
593
593
|
</header>
|
|
594
594
|
<main>
|
|
595
595
|
<div class="wrap">
|
|
596
596
|
<div class="note ok" style="margin-bottom: 16px;">
|
|
597
|
-
Using <code>react-component-meta</code>. Generation took <strong>4.
|
|
597
|
+
Using <code>react-component-meta</code>. Generation took <strong>4.3s</strong>.
|
|
598
598
|
</div>
|
|
599
599
|
<h2 class="section-title">Components</h2>
|
|
600
600
|
<div class="grid" role="list">
|
|
@@ -4503,7 +4503,7 @@ actions outright unless the user needs to see them and understand why.</div>
|
|
|
4503
4503
|
<div class="badges">
|
|
4504
4504
|
<label for="c-11-components-field-props" class="badge ok as-toggle">6 prop types</label>
|
|
4505
4505
|
|
|
4506
|
-
<label for="c-11-components-field-stories" class="badge ok as-toggle">
|
|
4506
|
+
<label for="c-11-components-field-stories" class="badge ok as-toggle">16 stories</label>
|
|
4507
4507
|
|
|
4508
4508
|
|
|
4509
4509
|
</div>
|
|
@@ -4724,6 +4724,39 @@ library.</div>
|
|
|
4724
4724
|
{ message: 'Include a number.' },
|
|
4725
4725
|
{ message: 'Use at least 8 characters.' }
|
|
4726
4726
|
]} />
|
|
4727
|
+
</Field.Root>;</code></pre>
|
|
4728
|
+
</div>
|
|
4729
|
+
<div class="note ok">
|
|
4730
|
+
<div class="row">
|
|
4731
|
+
<span class="ex-name">Error With Types</span>
|
|
4732
|
+
<span class="badge ok">story ok</span>
|
|
4733
|
+
</div>
|
|
4734
|
+
<div>Every rule a single error collected, rendered as a list</div>
|
|
4735
|
+
<div class="hint">One error whose `types` lists every rule that failed renders as that same
|
|
4736
|
+
list. A form library fills it when it collects all the failures instead of
|
|
4737
|
+
stopping at the first (react-hook-form's `criteriaMode: 'all'`), leaving only
|
|
4738
|
+
the first one in `message`, so the messages take precedence over it. A rule
|
|
4739
|
+
that failed without a message of its own contributes nothing.</div>
|
|
4740
|
+
<pre><code>const ErrorWithTypes = () => <Field.Root
|
|
4741
|
+
orientation="vertical"
|
|
4742
|
+
invalid
|
|
4743
|
+
disabled={false}
|
|
4744
|
+
readOnly={false}
|
|
4745
|
+
required={false}>
|
|
4746
|
+
<Label>Password</Label>
|
|
4747
|
+
<DemoInput type="password" defaultValue="short" />
|
|
4748
|
+
<Field.Error
|
|
4749
|
+
errors={[
|
|
4750
|
+
{
|
|
4751
|
+
message: 'At least one uppercase letter.',
|
|
4752
|
+
types: {
|
|
4753
|
+
uppercase: 'At least one uppercase letter.',
|
|
4754
|
+
number: 'At least one number.',
|
|
4755
|
+
length: ['At least 10 characters.'],
|
|
4756
|
+
unnamed: true
|
|
4757
|
+
}
|
|
4758
|
+
}
|
|
4759
|
+
]} />
|
|
4727
4760
|
</Field.Root>;</code></pre>
|
|
4728
4761
|
</div>
|
|
4729
4762
|
<div class="note ok">
|
|
@@ -5189,6 +5222,435 @@ The input's own `onChange` still runs, chained after the provider's.</di
|
|
|
5189
5222
|
</div>
|
|
5190
5223
|
|
|
5191
5224
|
|
|
5225
|
+
</div>
|
|
5226
|
+
</article>
|
|
5227
|
+
<article
|
|
5228
|
+
class="card
|
|
5229
|
+
no-error
|
|
5230
|
+
no-info
|
|
5231
|
+
no-story-error
|
|
5232
|
+
no-doc-error"
|
|
5233
|
+
role="listitem"
|
|
5234
|
+
aria-label="Form.Root">
|
|
5235
|
+
<div class="head">
|
|
5236
|
+
<div class="title">
|
|
5237
|
+
<h2><span class="status-dot dot-ok"></span> Form.Root</h2>
|
|
5238
|
+
<div class="badges">
|
|
5239
|
+
<label for="c-13-components-form-props" class="badge ok as-toggle">3 prop types</label>
|
|
5240
|
+
|
|
5241
|
+
<label for="c-13-components-form-stories" class="badge ok as-toggle">2 stories</label>
|
|
5242
|
+
|
|
5243
|
+
|
|
5244
|
+
</div>
|
|
5245
|
+
</div>
|
|
5246
|
+
<div class="meta" title="./src/form/form.stories.tsx">components-form · ./src/form/form.stories.tsx</div>
|
|
5247
|
+
<div>Form element bound to a react-hook-form instance, shared with its fields</div>
|
|
5248
|
+
<div class="hint">Form is the react-hook-form binding of the design system. `Form.Root` renders
|
|
5249
|
+
the `<form>` and provides the `useForm()` instance to the form fields inside
|
|
5250
|
+
it — `FormText` and the other `Form<X>` components — which bind themselves by
|
|
5251
|
+
`name`. The submit goes through `handleSubmit`, so `onSubmit` only runs with
|
|
5252
|
+
valid, typed values, and the element is always `noValidate`: validation is
|
|
5253
|
+
react-hook-form's, and the `required` a field sets is announced without the
|
|
5254
|
+
browser's own bubble.
|
|
5255
|
+
|
|
5256
|
+
`react-hook-form` is an optional peer dependency: install it in the app and
|
|
5257
|
+
keep a single copy, since the provider and the fields share one context.</div>
|
|
5258
|
+
<div class="kv"><span class="chip">summary: Form element bound to a react-hook-form instance, shared with its fields</span><span class="chip">example: const methods = useForm<Values>({ defaultValues: { agencyName: '', email: '' } });
|
|
5259
|
+
|
|
5260
|
+
<Form.Root methods={methods} onSubmit={saveAgency} aria-label="Agency profile">
|
|
5261
|
+
<FormText name="agencyName" label="Agency name" required rules={{ required: 'Enter the agency name.' }} />
|
|
5262
|
+
<FormText name="email" label="Email" inputProps={{ type: 'email' }} />
|
|
5263
|
+
<Button type="submit">Save</Button>
|
|
5264
|
+
</Form.Root></span></div>
|
|
5265
|
+
</div>
|
|
5266
|
+
|
|
5267
|
+
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
5268
|
+
|
|
5269
|
+
|
|
5270
|
+
<input id="c-13-components-form-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
5271
|
+
|
|
5272
|
+
|
|
5273
|
+
<input id="c-13-components-form-props" class="tg tg-props" type="checkbox" hidden />
|
|
5274
|
+
|
|
5275
|
+
<div class="panels">
|
|
5276
|
+
|
|
5277
|
+
|
|
5278
|
+
|
|
5279
|
+
<div class="panel panel-props">
|
|
5280
|
+
<div class="note ok">
|
|
5281
|
+
<div class="row">
|
|
5282
|
+
<span class="ex-name">Prop types <small>(react-component-meta)</small></span>
|
|
5283
|
+
<span class="badge ok">3 prop types</span>
|
|
5284
|
+
</div>
|
|
5285
|
+
<pre><code>Component: src/form/index.ts::Form</code></pre>
|
|
5286
|
+
<pre><code>Props:</code></pre>
|
|
5287
|
+
<pre><code>/**
|
|
5288
|
+
* Defines a string value that labels the current element.
|
|
5289
|
+
* Accessible name of the form. A `<form>` only becomes a landmark when it is
|
|
5290
|
+
* named, and screen readers list landmarks by name, so it is required.
|
|
5291
|
+
*/
|
|
5292
|
+
aria-label: string
|
|
5293
|
+
|
|
5294
|
+
/**
|
|
5295
|
+
* The object `useForm()` returns. `Form.Root` hands it to every form field
|
|
5296
|
+
* inside through react-hook-form's `FormProvider`, so a `FormText` needs only
|
|
5297
|
+
* its `name`. Create it in the component that owns the form and pass
|
|
5298
|
+
* `defaultValues`: a field whose value is `undefined` on the first render
|
|
5299
|
+
* starts uncontrolled. A form whose resolver transforms the values
|
|
5300
|
+
* (`useForm<Input, Context, Output>`) is accepted as is.
|
|
5301
|
+
*/
|
|
5302
|
+
methods: UseFormReturn<AgencyValues, any, AgencyValues>
|
|
5303
|
+
|
|
5304
|
+
/**
|
|
5305
|
+
* Called with the validated values once validation passes: the resolver's
|
|
5306
|
+
* output when it transforms them, the form's values otherwise. Wrapped in
|
|
5307
|
+
* `methods.handleSubmit`, which prevents the native submit and focuses the
|
|
5308
|
+
* first invalid field; when it is omitted the form validates and does nothing
|
|
5309
|
+
* else.
|
|
5310
|
+
*/
|
|
5311
|
+
onSubmit?: SubmitHandler<AgencyValues></code></pre>
|
|
5312
|
+
</div>
|
|
5313
|
+
</div>
|
|
5314
|
+
|
|
5315
|
+
<div class="panel panel-stories">
|
|
5316
|
+
|
|
5317
|
+
|
|
5318
|
+
|
|
5319
|
+
<div class="note ok">
|
|
5320
|
+
<div class="row">
|
|
5321
|
+
<span class="ex-name">Imports</span>
|
|
5322
|
+
</div>
|
|
5323
|
+
<pre><code>import { Button, Field, Form, FormText } from "@agentero/design-system";</code></pre>
|
|
5324
|
+
</div>
|
|
5325
|
+
|
|
5326
|
+
|
|
5327
|
+
<div class="note ok">
|
|
5328
|
+
<div class="row">
|
|
5329
|
+
<span class="ex-name">Default</span>
|
|
5330
|
+
<span class="badge ok">story ok</span>
|
|
5331
|
+
</div>
|
|
5332
|
+
<div>Form.Root with FormText fields validating on submit</div>
|
|
5333
|
+
<div class="hint">A form with two required fields and a submit button. Submitting empty shows
|
|
5334
|
+
both errors, marks both inputs invalid and focuses the first one — proof that
|
|
5335
|
+
react-hook-form's `ref` reached the inputs. Once filled in, `onSubmit`
|
|
5336
|
+
receives the typed values.</div>
|
|
5337
|
+
<pre><code>const Default = () => <AgencyForm />;</code></pre>
|
|
5338
|
+
</div>
|
|
5339
|
+
<div class="note ok">
|
|
5340
|
+
<div class="row">
|
|
5341
|
+
<span class="ex-name">No Validate</span>
|
|
5342
|
+
<span class="badge ok">story ok</span>
|
|
5343
|
+
</div>
|
|
5344
|
+
<div>Native required never triggers the browser's validation bubble</div>
|
|
5345
|
+
<div class="hint">`required` on a field reaches the native attribute, so assistive technology
|
|
5346
|
+
announces it, but the form renders `noValidate`: without `rules`, submitting
|
|
5347
|
+
the field empty is not blocked by the browser and `onSubmit` still runs.
|
|
5348
|
+
Validation is react-hook-form's alone.</div>
|
|
5349
|
+
<pre><code>const NoValidate = () => <NicknameForm />;</code></pre>
|
|
5350
|
+
</div>
|
|
5351
|
+
</div>
|
|
5352
|
+
|
|
5353
|
+
|
|
5354
|
+
</div>
|
|
5355
|
+
</article>
|
|
5356
|
+
<article
|
|
5357
|
+
class="card
|
|
5358
|
+
no-error
|
|
5359
|
+
no-info
|
|
5360
|
+
no-story-error
|
|
5361
|
+
no-doc-error"
|
|
5362
|
+
role="listitem"
|
|
5363
|
+
aria-label="FormText">
|
|
5364
|
+
<div class="head">
|
|
5365
|
+
<div class="title">
|
|
5366
|
+
<h2><span class="status-dot dot-ok"></span> FormText</h2>
|
|
5367
|
+
<div class="badges">
|
|
5368
|
+
<label for="c-14-components-formtext-props" class="badge ok as-toggle">15 prop types</label>
|
|
5369
|
+
|
|
5370
|
+
<label for="c-14-components-formtext-stories" class="badge ok as-toggle">9 stories</label>
|
|
5371
|
+
|
|
5372
|
+
|
|
5373
|
+
</div>
|
|
5374
|
+
</div>
|
|
5375
|
+
<div class="meta" title="./src/form-text/form-text.stories.tsx">components-formtext · ./src/form-text/form-text.stories.tsx</div>
|
|
5376
|
+
<div>Label, Input, description and error bound to one react-hook-form field</div>
|
|
5377
|
+
<div class="hint">FormText is a complete text field bound to one react-hook-form value: label,
|
|
5378
|
+
`Input`, helper text and validation error in the standard order, wired
|
|
5379
|
+
through `useController`. It renders inside a `Form.Root` and needs only a
|
|
5380
|
+
`name`; `required`, `invalid` and the error reach the label, the input's
|
|
5381
|
+
`aria-*` attributes and the message with no ids written by hand.
|
|
5382
|
+
|
|
5383
|
+
It covers the common case. For another layout — an input with addons, a
|
|
5384
|
+
different control, a message rendered elsewhere — compose `useController`
|
|
5385
|
+
with the `FieldText`, `Label`, `Input` and `Field.*` primitives directly.</div>
|
|
5386
|
+
<div class="kv"><span class="chip">summary: Label, Input, description and error bound to one react-hook-form field</span><span class="chip">example: <FormText
|
|
5387
|
+
name="taxId"
|
|
5388
|
+
label="Tax ID"
|
|
5389
|
+
tooltip="The EIN the IRS issued to the agency."
|
|
5390
|
+
description="Nine digits, with or without the dash."
|
|
5391
|
+
required
|
|
5392
|
+
rules={{ required: 'Enter the tax ID.', pattern: { value: /^\d{2}-?\d{7}$/, message: 'Nine digits.' } }}
|
|
5393
|
+
inputProps={{ inputMode: 'numeric', autoComplete: 'off' }}
|
|
5394
|
+
/></span></div>
|
|
5395
|
+
</div>
|
|
5396
|
+
|
|
5397
|
+
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
5398
|
+
|
|
5399
|
+
|
|
5400
|
+
<input id="c-14-components-formtext-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
5401
|
+
|
|
5402
|
+
|
|
5403
|
+
<input id="c-14-components-formtext-props" class="tg tg-props" type="checkbox" hidden />
|
|
5404
|
+
|
|
5405
|
+
<div class="panels">
|
|
5406
|
+
|
|
5407
|
+
|
|
5408
|
+
|
|
5409
|
+
<div class="panel panel-props">
|
|
5410
|
+
<div class="note ok">
|
|
5411
|
+
<div class="row">
|
|
5412
|
+
<span class="ex-name">Prop types <small>(react-component-meta)</small></span>
|
|
5413
|
+
<span class="badge ok">15 prop types</span>
|
|
5414
|
+
</div>
|
|
5415
|
+
<pre><code>Component: src/form-text/index.ts::FormText</code></pre>
|
|
5416
|
+
<pre><code>Props:</code></pre>
|
|
5417
|
+
<pre><code>/**
|
|
5418
|
+
* The form's `control`, from `useForm()`. Defaults to the one the
|
|
5419
|
+
* surrounding `Form.Root` provides; pass it explicitly to get `name`
|
|
5420
|
+
* inference without writing the generic, or when the field renders outside
|
|
5421
|
+
* a `Form.Root`. A `control` whose resolver transforms the values is
|
|
5422
|
+
* accepted as is.
|
|
5423
|
+
*/
|
|
5424
|
+
control?: Control<FieldValues, any, FieldValues>
|
|
5425
|
+
|
|
5426
|
+
/**
|
|
5427
|
+
* `id` for the control. Generated when omitted. Set it here, not on the
|
|
5428
|
+
* control, so the label and the messages keep pointing at the right element.
|
|
5429
|
+
*/
|
|
5430
|
+
controlId?: string
|
|
5431
|
+
|
|
5432
|
+
/**
|
|
5433
|
+
* Helper text shown under the control and announced through its
|
|
5434
|
+
* `aria-describedby`. Use it for guidance the user needs before typing; put
|
|
5435
|
+
* details worth a click in `tooltip` instead.
|
|
5436
|
+
*/
|
|
5437
|
+
description?: ReactNode
|
|
5438
|
+
|
|
5439
|
+
/**
|
|
5440
|
+
* Disables the control through its context and sets `data-disabled` on the root.
|
|
5441
|
+
* Disables the input and marks the field. Unlike react-hook-form's own
|
|
5442
|
+
* `disabled` option, the value stays in the submitted data: disabling a
|
|
5443
|
+
* field is a presentation decision, not a change to the form's values.
|
|
5444
|
+
*/
|
|
5445
|
+
disabled?: boolean
|
|
5446
|
+
|
|
5447
|
+
/**
|
|
5448
|
+
* Everything else the `Input` should receive: `type`, `placeholder`,
|
|
5449
|
+
* `maxLength`, `autoComplete`, `size`, `className`… Handlers such as
|
|
5450
|
+
* `onChange` and `onBlur` run after react-hook-form's, which are already
|
|
5451
|
+
* wired.
|
|
5452
|
+
*/
|
|
5453
|
+
inputProps?: FormTextInputProps
|
|
5454
|
+
|
|
5455
|
+
/**
|
|
5456
|
+
* The caption, rendered as the field's label. Text in almost every case.
|
|
5457
|
+
*/
|
|
5458
|
+
label: ReactNode
|
|
5459
|
+
|
|
5460
|
+
/**
|
|
5461
|
+
* Path of the value in the form, nested paths included (`'agency.npn'`).
|
|
5462
|
+
* Type it against the form's values with the generic
|
|
5463
|
+
* (`<FormText<Values> name="agency.npn" />`) or by passing `control`: the
|
|
5464
|
+
* path must then exist and hold a string (`FormTextPath`).
|
|
5465
|
+
*/
|
|
5466
|
+
name: "agencyName"
|
|
5467
|
+
|
|
5468
|
+
/**
|
|
5469
|
+
* Appends a muted " (optional)" to the label. The forms mark optional fields
|
|
5470
|
+
* rather than required ones; ignored when `required` is set.
|
|
5471
|
+
*/
|
|
5472
|
+
optional?: boolean
|
|
5473
|
+
|
|
5474
|
+
/**
|
|
5475
|
+
* Layout of the field. `vertical` (default) stacks label, control and
|
|
5476
|
+
* messages. `horizontal` is one row at every width: the first child fills it
|
|
5477
|
+
* and the rest keep their natural width, aligned to the right, so the
|
|
5478
|
+
* controls of stacked fields line up. `responsive` stacks below `28rem` and
|
|
5479
|
+
* behaves like `horizontal` from there, measured on the field itself, so it
|
|
5480
|
+
* needs no particular wrapper. In both, `Field.Content` groups a control with
|
|
5481
|
+
* its messages, or a label with its description.
|
|
5482
|
+
*/
|
|
5483
|
+
orientation?: "horizontal" | "vertical" | "responsive"
|
|
5484
|
+
|
|
5485
|
+
/**
|
|
5486
|
+
* Makes the control read-only through its context (focusable and copyable,
|
|
5487
|
+
* not editable, still submitted) and sets `data-readonly` on the root.
|
|
5488
|
+
*/
|
|
5489
|
+
readOnly?: boolean
|
|
5490
|
+
|
|
5491
|
+
/**
|
|
5492
|
+
* Single source of truth for a required field: the `Label` shows its
|
|
5493
|
+
* asterisk and the control receives `required`, both through context.
|
|
5494
|
+
* Marks the field required: an asterisk on the label and the native
|
|
5495
|
+
* `required` attribute on the input, which assistive technology announces.
|
|
5496
|
+
* It does not validate — pair it with `rules.required` or a resolver — and it
|
|
5497
|
+
* never triggers the browser bubble, since `Form.Root` renders `noValidate`.
|
|
5498
|
+
*/
|
|
5499
|
+
required?: boolean
|
|
5500
|
+
|
|
5501
|
+
/**
|
|
5502
|
+
* react-hook-form validation rules for this field (`required`, `pattern`,
|
|
5503
|
+
* `validate`…), same as `register`'s. They only validate: `rules.required`
|
|
5504
|
+
* does not mark the field `required` — that is a separate, visible decision.
|
|
5505
|
+
*/
|
|
5506
|
+
rules?: Omit<RegisterOptions<FieldValues, "agencyName">, "disabled" | "valueAsNumber" | "valueAsDate" | "setValueAs">
|
|
5507
|
+
|
|
5508
|
+
/**
|
|
5509
|
+
* Drops the value from the form when the field unmounts, react-hook-form's
|
|
5510
|
+
* `shouldUnregister`. Defaults to `false`: a field revealed by another one
|
|
5511
|
+
* keeps its value while hidden.
|
|
5512
|
+
*/
|
|
5513
|
+
shouldUnregister?: boolean
|
|
5514
|
+
|
|
5515
|
+
/**
|
|
5516
|
+
* Content of an info tooltip rendered beside the label, for details that
|
|
5517
|
+
* would clutter the description. The trigger is a sibling of the label, so
|
|
5518
|
+
* the field's accessible name stays the label text.
|
|
5519
|
+
*/
|
|
5520
|
+
tooltip?: ReactNode
|
|
5521
|
+
|
|
5522
|
+
/**
|
|
5523
|
+
* Preferred side of the tooltip. Defaults to `'top'`.
|
|
5524
|
+
*/
|
|
5525
|
+
tooltipSide?: "right" | "top" | "bottom" | "left"</code></pre>
|
|
5526
|
+
</div>
|
|
5527
|
+
</div>
|
|
5528
|
+
|
|
5529
|
+
<div class="panel panel-stories">
|
|
5530
|
+
|
|
5531
|
+
|
|
5532
|
+
|
|
5533
|
+
<div class="note ok">
|
|
5534
|
+
<div class="row">
|
|
5535
|
+
<span class="ex-name">Imports</span>
|
|
5536
|
+
</div>
|
|
5537
|
+
<pre><code>import { Button, Field, Form, FormText } from "@agentero/design-system";</code></pre>
|
|
5538
|
+
</div>
|
|
5539
|
+
|
|
5540
|
+
|
|
5541
|
+
<div class="note ok">
|
|
5542
|
+
<div class="row">
|
|
5543
|
+
<span class="ex-name">Default</span>
|
|
5544
|
+
<span class="badge ok">story ok</span>
|
|
5545
|
+
</div>
|
|
5546
|
+
<div>Required text field validating on submit</div>
|
|
5547
|
+
<div class="hint">The field consumers write: a `name`, a `label` and the validation rule.
|
|
5548
|
+
Submitting empty renders the error and marks the input invalid; typing
|
|
5549
|
+
clears both and the value reaches `onSubmit`.</div>
|
|
5550
|
+
<pre><code>const Default = () => <AgencyNameForm
|
|
5551
|
+
name="agencyName"
|
|
5552
|
+
label="Agency name"
|
|
5553
|
+
orientation="vertical"
|
|
5554
|
+
required
|
|
5555
|
+
optional={false}
|
|
5556
|
+
disabled={false}
|
|
5557
|
+
readOnly={false} />;</code></pre>
|
|
5558
|
+
</div>
|
|
5559
|
+
<div class="note ok">
|
|
5560
|
+
<div class="row">
|
|
5561
|
+
<span class="ex-name">With Description And Tooltip</span>
|
|
5562
|
+
<span class="badge ok">story ok</span>
|
|
5563
|
+
</div>
|
|
5564
|
+
<div>Helper text under the input and an info tooltip beside the label</div>
|
|
5565
|
+
<div class="hint">`description` is helper text under the input, announced through
|
|
5566
|
+
`aria-describedby`. `tooltip` is an info button beside the label for details
|
|
5567
|
+
worth a click; it is a sibling of the `<label>`, so the field's accessible
|
|
5568
|
+
name stays the label text.</div>
|
|
5569
|
+
<pre><code>const WithDescriptionAndTooltip = () => <TaxIdForm />;</code></pre>
|
|
5570
|
+
</div>
|
|
5571
|
+
<div class="note ok">
|
|
5572
|
+
<div class="row">
|
|
5573
|
+
<span class="ex-name">Optional</span>
|
|
5574
|
+
<span class="badge ok">story ok</span>
|
|
5575
|
+
</div>
|
|
5576
|
+
<div>Optional field with the " (optional)" label suffix</div>
|
|
5577
|
+
<div class="hint">The forms mark optional fields rather than required ones: `optional`
|
|
5578
|
+
appends a muted suffix to the label and leaves the input without the
|
|
5579
|
+
`required` attribute.</div>
|
|
5580
|
+
<pre><code>const Optional = () => <PhoneForm />;</code></pre>
|
|
5581
|
+
</div>
|
|
5582
|
+
<div class="note ok">
|
|
5583
|
+
<div class="row">
|
|
5584
|
+
<span class="ex-name">With Rules</span>
|
|
5585
|
+
<span class="badge ok">story ok</span>
|
|
5586
|
+
</div>
|
|
5587
|
+
<div>Nested path with validation rules, typed through the generic</div>
|
|
5588
|
+
<div class="hint">`rules` are react-hook-form's, and `name` accepts nested paths typed against
|
|
5589
|
+
the form's values through the generic. `rules.required` validates but does
|
|
5590
|
+
not mark the field required: that stays an explicit `required` prop.</div>
|
|
5591
|
+
<pre><code>const WithRules = () => <NpnForm />;</code></pre>
|
|
5592
|
+
</div>
|
|
5593
|
+
<div class="note ok">
|
|
5594
|
+
<div class="row">
|
|
5595
|
+
<span class="ex-name">All Errors</span>
|
|
5596
|
+
<span class="badge ok">story ok</span>
|
|
5597
|
+
</div>
|
|
5598
|
+
<div>Every failed rule listed under criteriaMode 'all'</div>
|
|
5599
|
+
<div class="hint">A form set to react-hook-form's `criteriaMode: 'all'` collects every rule
|
|
5600
|
+
that failed instead of stopping at the first, and the field lists them all.
|
|
5601
|
+
With the default `'firstError'` a single message is rendered, as in the other
|
|
5602
|
+
stories.</div>
|
|
5603
|
+
<pre><code>const AllErrors = () => <PasswordRulesForm />;</code></pre>
|
|
5604
|
+
</div>
|
|
5605
|
+
<div class="note ok">
|
|
5606
|
+
<div class="row">
|
|
5607
|
+
<span class="ex-name">Input Props Chaining</span>
|
|
5608
|
+
<span class="badge ok">story ok</span>
|
|
5609
|
+
</div>
|
|
5610
|
+
<div>Input attributes and a consumer onChange chained after the form's</div>
|
|
5611
|
+
<div class="hint">`inputProps` carries the input's own attributes — `type`, `placeholder`,
|
|
5612
|
+
`maxLength`, `size`… — and its handlers. A consumer `onChange` runs after
|
|
5613
|
+
react-hook-form's: by the time it fires, `getValues` already returns the new
|
|
5614
|
+
value.</div>
|
|
5615
|
+
<pre><code>const InputPropsChaining = () => <MobileForm />;</code></pre>
|
|
5616
|
+
</div>
|
|
5617
|
+
<div class="note ok">
|
|
5618
|
+
<div class="row">
|
|
5619
|
+
<span class="ex-name">Horizontal</span>
|
|
5620
|
+
<span class="badge ok">story ok</span>
|
|
5621
|
+
</div>
|
|
5622
|
+
<div>Horizontal orientation and class names through the root props</div>
|
|
5623
|
+
<div class="hint">Root props pass through: `orientation="horizontal"` lays the label and the
|
|
5624
|
+
control in a row, and `className` on the root or in `inputProps` sizes them.
|
|
5625
|
+
The `Input` is full-width by default, so a settings row gives it a width.
|
|
5626
|
+
`responsive` stacks the field below 28rem and rows it from there.</div>
|
|
5627
|
+
<pre><code>const Horizontal = () => <ProfileForm />;</code></pre>
|
|
5628
|
+
</div>
|
|
5629
|
+
<div class="note ok">
|
|
5630
|
+
<div class="row">
|
|
5631
|
+
<span class="ex-name">Disabled</span>
|
|
5632
|
+
<span class="badge ok">story ok</span>
|
|
5633
|
+
</div>
|
|
5634
|
+
<div>Disabled field whose value is still submitted</div>
|
|
5635
|
+
<div class="hint">`disabled` disables the input and marks the field, and the value still
|
|
5636
|
+
reaches `onSubmit` — unlike react-hook-form's own `disabled` option, which
|
|
5637
|
+
drops it. Use `readOnly` for a value the user can copy but not edit.</div>
|
|
5638
|
+
<pre><code>const Disabled = () => <AccountForm />;</code></pre>
|
|
5639
|
+
</div>
|
|
5640
|
+
<div class="note ok">
|
|
5641
|
+
<div class="row">
|
|
5642
|
+
<span class="ex-name">Set Focus</span>
|
|
5643
|
+
<span class="badge ok">story ok</span>
|
|
5644
|
+
</div>
|
|
5645
|
+
<div>setFocus reaches the input through the merged ref</div>
|
|
5646
|
+
<div class="hint">react-hook-form's `ref` reaches the `<input>`, so `setFocus` and the focus
|
|
5647
|
+
on the first invalid field after submit both work with no ref written by
|
|
5648
|
+
hand.</div>
|
|
5649
|
+
<pre><code>const SetFocus = () => <SetFocusForm />;</code></pre>
|
|
5650
|
+
</div>
|
|
5651
|
+
</div>
|
|
5652
|
+
|
|
5653
|
+
|
|
5192
5654
|
</div>
|
|
5193
5655
|
</article>
|
|
5194
5656
|
<article
|
|
@@ -5203,9 +5665,9 @@ The input's own `onChange` still runs, chained after the provider's.</di
|
|
|
5203
5665
|
<div class="title">
|
|
5204
5666
|
<h2><span class="status-dot dot-ok"></span> HoverCard.Root</h2>
|
|
5205
5667
|
<div class="badges">
|
|
5206
|
-
<label for="c-
|
|
5668
|
+
<label for="c-15-components-hovercard-props" class="badge ok as-toggle">6 prop types</label>
|
|
5207
5669
|
|
|
5208
|
-
<label for="c-
|
|
5670
|
+
<label for="c-15-components-hovercard-stories" class="badge ok as-toggle">7 stories</label>
|
|
5209
5671
|
|
|
5210
5672
|
|
|
5211
5673
|
</div>
|
|
@@ -5237,10 +5699,10 @@ import { HoverCard } from '@agentero/design-system/hover-card';
|
|
|
5237
5699
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
5238
5700
|
|
|
5239
5701
|
|
|
5240
|
-
<input id="c-
|
|
5702
|
+
<input id="c-15-components-hovercard-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
5241
5703
|
|
|
5242
5704
|
|
|
5243
|
-
<input id="c-
|
|
5705
|
+
<input id="c-15-components-hovercard-props" class="tg tg-props" type="checkbox" hidden />
|
|
5244
5706
|
|
|
5245
5707
|
<div class="panels">
|
|
5246
5708
|
|
|
@@ -5487,9 +5949,9 @@ trigger-dense UIs where an instant preview reads as more responsive.</div>
|
|
|
5487
5949
|
<div class="title">
|
|
5488
5950
|
<h2><span class="status-dot dot-ok"></span> Input</h2>
|
|
5489
5951
|
<div class="badges">
|
|
5490
|
-
<label for="c-
|
|
5952
|
+
<label for="c-16-components-input-props" class="badge ok as-toggle">7 prop types</label>
|
|
5491
5953
|
|
|
5492
|
-
<label for="c-
|
|
5954
|
+
<label for="c-16-components-input-stories" class="badge ok as-toggle">9 stories</label>
|
|
5493
5955
|
|
|
5494
5956
|
|
|
5495
5957
|
</div>
|
|
@@ -5512,10 +5974,10 @@ assistive technology announces.</div>
|
|
|
5512
5974
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
5513
5975
|
|
|
5514
5976
|
|
|
5515
|
-
<input id="c-
|
|
5977
|
+
<input id="c-16-components-input-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
5516
5978
|
|
|
5517
5979
|
|
|
5518
|
-
<input id="c-
|
|
5980
|
+
<input id="c-16-components-input-props" class="tg tg-props" type="checkbox" hidden />
|
|
5519
5981
|
|
|
5520
5982
|
<div class="panels">
|
|
5521
5983
|
|
|
@@ -5727,9 +6189,9 @@ they cannot change.</div>
|
|
|
5727
6189
|
<div class="title">
|
|
5728
6190
|
<h2><span class="status-dot dot-ok"></span> Label</h2>
|
|
5729
6191
|
<div class="badges">
|
|
5730
|
-
<label for="c-
|
|
6192
|
+
<label for="c-17-components-label-props" class="badge ok as-toggle">3 prop types</label>
|
|
5731
6193
|
|
|
5732
|
-
<label for="c-
|
|
6194
|
+
<label for="c-17-components-label-stories" class="badge ok as-toggle">5 stories</label>
|
|
5733
6195
|
|
|
5734
6196
|
|
|
5735
6197
|
</div>
|
|
@@ -5749,10 +6211,10 @@ still has to carry `required` / `aria-required`.</div>
|
|
|
5749
6211
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
5750
6212
|
|
|
5751
6213
|
|
|
5752
|
-
<input id="c-
|
|
6214
|
+
<input id="c-17-components-label-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
5753
6215
|
|
|
5754
6216
|
|
|
5755
|
-
<input id="c-
|
|
6217
|
+
<input id="c-17-components-label-props" class="tg tg-props" type="checkbox" hidden />
|
|
5756
6218
|
|
|
5757
6219
|
<div class="panels">
|
|
5758
6220
|
|
|
@@ -5872,9 +6334,9 @@ field's control with no `htmlFor`. An explicit `htmlFor` still wins.</div>
|
|
|
5872
6334
|
<div class="title">
|
|
5873
6335
|
<h2><span class="status-dot dot-ok"></span> Loading</h2>
|
|
5874
6336
|
<div class="badges">
|
|
5875
|
-
<label for="c-
|
|
6337
|
+
<label for="c-18-components-loading-props" class="badge ok as-toggle">1 prop type</label>
|
|
5876
6338
|
|
|
5877
|
-
<label for="c-
|
|
6339
|
+
<label for="c-18-components-loading-stories" class="badge ok as-toggle">7 stories</label>
|
|
5878
6340
|
|
|
5879
6341
|
|
|
5880
6342
|
</div>
|
|
@@ -5891,10 +6353,10 @@ parent font size via `em`-based size variants (`sm`, `md`, `lg`).</div>
|
|
|
5891
6353
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
5892
6354
|
|
|
5893
6355
|
|
|
5894
|
-
<input id="c-
|
|
6356
|
+
<input id="c-18-components-loading-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
5895
6357
|
|
|
5896
6358
|
|
|
5897
|
-
<input id="c-
|
|
6359
|
+
<input id="c-18-components-loading-props" class="tg tg-props" type="checkbox" hidden />
|
|
5898
6360
|
|
|
5899
6361
|
<div class="panels">
|
|
5900
6362
|
|
|
@@ -6045,9 +6507,9 @@ against the dark background.</div>
|
|
|
6045
6507
|
<div class="title">
|
|
6046
6508
|
<h2><span class="status-dot dot-ok"></span> Modal.Root</h2>
|
|
6047
6509
|
<div class="badges">
|
|
6048
|
-
<label for="c-
|
|
6510
|
+
<label for="c-19-components-modal-props" class="badge ok as-toggle">5 prop types</label>
|
|
6049
6511
|
|
|
6050
|
-
<label for="c-
|
|
6512
|
+
<label for="c-19-components-modal-stories" class="badge ok as-toggle">6 stories</label>
|
|
6051
6513
|
|
|
6052
6514
|
|
|
6053
6515
|
</div>
|
|
@@ -6093,10 +6555,10 @@ import { Modal } from '@agentero/design-system/modal';
|
|
|
6093
6555
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
6094
6556
|
|
|
6095
6557
|
|
|
6096
|
-
<input id="c-
|
|
6558
|
+
<input id="c-19-components-modal-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
6097
6559
|
|
|
6098
6560
|
|
|
6099
|
-
<input id="c-
|
|
6561
|
+
<input id="c-19-components-modal-props" class="tg tg-props" type="checkbox" hidden />
|
|
6100
6562
|
|
|
6101
6563
|
<div class="panels">
|
|
6102
6564
|
|
|
@@ -6293,9 +6755,9 @@ announced as an `alertdialog`. Only the footer actions close it.</div>
|
|
|
6293
6755
|
<div class="title">
|
|
6294
6756
|
<h2><span class="status-dot dot-ok"></span> Pagination</h2>
|
|
6295
6757
|
<div class="badges">
|
|
6296
|
-
<label for="c-
|
|
6758
|
+
<label for="c-20-components-pagination-props" class="badge ok as-toggle">5 prop types</label>
|
|
6297
6759
|
|
|
6298
|
-
<label for="c-
|
|
6760
|
+
<label for="c-20-components-pagination-stories" class="badge ok as-toggle">7 stories</label>
|
|
6299
6761
|
|
|
6300
6762
|
|
|
6301
6763
|
</div>
|
|
@@ -6325,10 +6787,10 @@ const [page, setPage] = useState(1);
|
|
|
6325
6787
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
6326
6788
|
|
|
6327
6789
|
|
|
6328
|
-
<input id="c-
|
|
6790
|
+
<input id="c-20-components-pagination-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
6329
6791
|
|
|
6330
6792
|
|
|
6331
|
-
<input id="c-
|
|
6793
|
+
<input id="c-20-components-pagination-props" class="tg tg-props" type="checkbox" hidden />
|
|
6332
6794
|
|
|
6333
6795
|
<div class="panels">
|
|
6334
6796
|
|
|
@@ -6483,9 +6945,9 @@ entries summary follow along.</div>
|
|
|
6483
6945
|
<div class="title">
|
|
6484
6946
|
<h2><span class="status-dot dot-ok"></span> Popover.Root</h2>
|
|
6485
6947
|
<div class="badges">
|
|
6486
|
-
<label for="c-
|
|
6948
|
+
<label for="c-21-components-popover-props" class="badge ok as-toggle">5 prop types</label>
|
|
6487
6949
|
|
|
6488
|
-
<label for="c-
|
|
6950
|
+
<label for="c-21-components-popover-stories" class="badge ok as-toggle">5 stories</label>
|
|
6489
6951
|
|
|
6490
6952
|
|
|
6491
6953
|
</div>
|
|
@@ -6514,10 +6976,10 @@ import { Popover } from '@agentero/design-system/popover';
|
|
|
6514
6976
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
6515
6977
|
|
|
6516
6978
|
|
|
6517
|
-
<input id="c-
|
|
6979
|
+
<input id="c-21-components-popover-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
6518
6980
|
|
|
6519
6981
|
|
|
6520
|
-
<input id="c-
|
|
6982
|
+
<input id="c-21-components-popover-props" class="tg tg-props" type="checkbox" hidden />
|
|
6521
6983
|
|
|
6522
6984
|
<div class="panels">
|
|
6523
6985
|
|
|
@@ -6716,9 +7178,9 @@ focus returning to its trigger once the modal closes.</div>
|
|
|
6716
7178
|
<div class="title">
|
|
6717
7179
|
<h2><span class="status-dot dot-ok"></span> Progress</h2>
|
|
6718
7180
|
<div class="badges">
|
|
6719
|
-
<label for="c-
|
|
7181
|
+
<label for="c-22-components-progress-props" class="badge ok as-toggle">4 prop types</label>
|
|
6720
7182
|
|
|
6721
|
-
<label for="c-
|
|
7183
|
+
<label for="c-22-components-progress-stories" class="badge ok as-toggle">4 stories</label>
|
|
6722
7184
|
|
|
6723
7185
|
|
|
6724
7186
|
</div>
|
|
@@ -6737,10 +7199,10 @@ with `currentColor`, so recolor it with a plain text class — e.g.
|
|
|
6737
7199
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
6738
7200
|
|
|
6739
7201
|
|
|
6740
|
-
<input id="c-
|
|
7202
|
+
<input id="c-22-components-progress-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
6741
7203
|
|
|
6742
7204
|
|
|
6743
|
-
<input id="c-
|
|
7205
|
+
<input id="c-22-components-progress-props" class="tg tg-props" type="checkbox" hidden />
|
|
6744
7206
|
|
|
6745
7207
|
<div class="panels">
|
|
6746
7208
|
|
|
@@ -6859,7 +7321,7 @@ percentage: number</code></pre>
|
|
|
6859
7321
|
<div class="badges">
|
|
6860
7322
|
|
|
6861
7323
|
|
|
6862
|
-
<label for="c-
|
|
7324
|
+
<label for="c-23-components-skeleton-stories" class="badge ok as-toggle">4 stories</label>
|
|
6863
7325
|
|
|
6864
7326
|
|
|
6865
7327
|
</div>
|
|
@@ -6876,7 +7338,7 @@ shape it with Tailwind classes to mirror the content it stands in for.</div>
|
|
|
6876
7338
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
6877
7339
|
|
|
6878
7340
|
|
|
6879
|
-
<input id="c-
|
|
7341
|
+
<input id="c-23-components-skeleton-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
6880
7342
|
|
|
6881
7343
|
|
|
6882
7344
|
|
|
@@ -6972,9 +7434,9 @@ shape it with Tailwind classes to mirror the content it stands in for.</div>
|
|
|
6972
7434
|
<div class="title">
|
|
6973
7435
|
<h2><span class="status-dot dot-ok"></span> Switch</h2>
|
|
6974
7436
|
<div class="badges">
|
|
6975
|
-
<label for="c-
|
|
7437
|
+
<label for="c-24-components-switch-props" class="badge ok as-toggle">8 prop types</label>
|
|
6976
7438
|
|
|
6977
|
-
<label for="c-
|
|
7439
|
+
<label for="c-24-components-switch-stories" class="badge ok as-toggle">7 stories</label>
|
|
6978
7440
|
|
|
6979
7441
|
|
|
6980
7442
|
</div>
|
|
@@ -6990,10 +7452,10 @@ a Checkbox for a single boolean that applies instantly, and pair it with a
|
|
|
6990
7452
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
6991
7453
|
|
|
6992
7454
|
|
|
6993
|
-
<input id="c-
|
|
7455
|
+
<input id="c-24-components-switch-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
6994
7456
|
|
|
6995
7457
|
|
|
6996
|
-
<input id="c-
|
|
7458
|
+
<input id="c-24-components-switch-props" class="tg tg-props" type="checkbox" hidden />
|
|
6997
7459
|
|
|
6998
7460
|
<div class="panels">
|
|
6999
7461
|
|
|
@@ -7174,9 +7636,9 @@ size?: "sm" | "md"</code></pre>
|
|
|
7174
7636
|
<div class="title">
|
|
7175
7637
|
<h2><span class="status-dot dot-ok"></span> Table.Root</h2>
|
|
7176
7638
|
<div class="badges">
|
|
7177
|
-
<label for="c-
|
|
7639
|
+
<label for="c-25-components-table-props" class="badge ok as-toggle">6 prop types</label>
|
|
7178
7640
|
|
|
7179
|
-
<label for="c-
|
|
7641
|
+
<label for="c-25-components-table-stories" class="badge ok as-toggle">9 stories</label>
|
|
7180
7642
|
|
|
7181
7643
|
|
|
7182
7644
|
</div>
|
|
@@ -7207,10 +7669,10 @@ import { Table } from '@agentero/design-system/table';
|
|
|
7207
7669
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
7208
7670
|
|
|
7209
7671
|
|
|
7210
|
-
<input id="c-
|
|
7672
|
+
<input id="c-25-components-table-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
7211
7673
|
|
|
7212
7674
|
|
|
7213
|
-
<input id="c-
|
|
7675
|
+
<input id="c-25-components-table-props" class="tg tg-props" type="checkbox" hidden />
|
|
7214
7676
|
|
|
7215
7677
|
<div class="panels">
|
|
7216
7678
|
|
|
@@ -7405,9 +7867,9 @@ import { Fragment } from "react";</code></pre>
|
|
|
7405
7867
|
<div class="title">
|
|
7406
7868
|
<h2><span class="status-dot dot-ok"></span> Tabs.Root</h2>
|
|
7407
7869
|
<div class="badges">
|
|
7408
|
-
<label for="c-
|
|
7870
|
+
<label for="c-26-components-tabs-props" class="badge ok as-toggle">9 prop types</label>
|
|
7409
7871
|
|
|
7410
|
-
<label for="c-
|
|
7872
|
+
<label for="c-26-components-tabs-stories" class="badge ok as-toggle">8 stories</label>
|
|
7411
7873
|
|
|
7412
7874
|
|
|
7413
7875
|
</div>
|
|
@@ -7438,10 +7900,10 @@ import { Tabs } from '@agentero/design-system/tabs';
|
|
|
7438
7900
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
7439
7901
|
|
|
7440
7902
|
|
|
7441
|
-
<input id="c-
|
|
7903
|
+
<input id="c-26-components-tabs-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
7442
7904
|
|
|
7443
7905
|
|
|
7444
|
-
<input id="c-
|
|
7906
|
+
<input id="c-26-components-tabs-props" class="tg tg-props" type="checkbox" hidden />
|
|
7445
7907
|
|
|
7446
7908
|
<div class="panels">
|
|
7447
7909
|
|
|
@@ -7662,9 +8124,9 @@ tablist role is announced.</div>
|
|
|
7662
8124
|
<div class="title">
|
|
7663
8125
|
<h2><span class="status-dot dot-ok"></span> Tag</h2>
|
|
7664
8126
|
<div class="badges">
|
|
7665
|
-
<label for="c-
|
|
8127
|
+
<label for="c-27-components-tag-props" class="badge ok as-toggle">8 prop types</label>
|
|
7666
8128
|
|
|
7667
|
-
<label for="c-
|
|
8129
|
+
<label for="c-27-components-tag-stories" class="badge ok as-toggle">12 stories</label>
|
|
7668
8130
|
|
|
7669
8131
|
|
|
7670
8132
|
</div>
|
|
@@ -7683,10 +8145,10 @@ it an interactive link or button, which adds the pointer cursor and hover fill.<
|
|
|
7683
8145
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
7684
8146
|
|
|
7685
8147
|
|
|
7686
|
-
<input id="c-
|
|
8148
|
+
<input id="c-27-components-tag-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
7687
8149
|
|
|
7688
8150
|
|
|
7689
|
-
<input id="c-
|
|
8151
|
+
<input id="c-27-components-tag-props" class="tg tg-props" type="checkbox" hidden />
|
|
7690
8152
|
|
|
7691
8153
|
<div class="panels">
|
|
7692
8154
|
|
|
@@ -8111,9 +8573,9 @@ leading + trailing icons, and icon-only.</div>
|
|
|
8111
8573
|
<div class="title">
|
|
8112
8574
|
<h2><span class="status-dot dot-ok"></span> Toast</h2>
|
|
8113
8575
|
<div class="badges">
|
|
8114
|
-
<label for="c-
|
|
8576
|
+
<label for="c-28-components-toast-props" class="badge ok as-toggle">11 prop types</label>
|
|
8115
8577
|
|
|
8116
|
-
<label for="c-
|
|
8578
|
+
<label for="c-28-components-toast-stories" class="badge ok as-toggle">11 stories</label>
|
|
8117
8579
|
|
|
8118
8580
|
|
|
8119
8581
|
</div>
|
|
@@ -8132,10 +8594,10 @@ common feedback patterns.</div>
|
|
|
8132
8594
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
8133
8595
|
|
|
8134
8596
|
|
|
8135
|
-
<input id="c-
|
|
8597
|
+
<input id="c-28-components-toast-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
8136
8598
|
|
|
8137
8599
|
|
|
8138
|
-
<input id="c-
|
|
8600
|
+
<input id="c-28-components-toast-props" class="tg tg-props" type="checkbox" hidden />
|
|
8139
8601
|
|
|
8140
8602
|
<div class="panels">
|
|
8141
8603
|
|
|
@@ -8564,9 +9026,9 @@ action (e.g., a sync icon for a sync-in-progress toast).</div>
|
|
|
8564
9026
|
<div class="title">
|
|
8565
9027
|
<h2><span class="status-dot dot-ok"></span> Tooltip</h2>
|
|
8566
9028
|
<div class="badges">
|
|
8567
|
-
<label for="c-
|
|
9029
|
+
<label for="c-29-components-tooltip-props" class="badge ok as-toggle">12 prop types</label>
|
|
8568
9030
|
|
|
8569
|
-
<label for="c-
|
|
9031
|
+
<label for="c-29-components-tooltip-stories" class="badge ok as-toggle">5 stories</label>
|
|
8570
9032
|
|
|
8571
9033
|
|
|
8572
9034
|
</div>
|
|
@@ -8585,10 +9047,10 @@ on hover or focus.</div>
|
|
|
8585
9047
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
8586
9048
|
|
|
8587
9049
|
|
|
8588
|
-
<input id="c-
|
|
9050
|
+
<input id="c-29-components-tooltip-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
8589
9051
|
|
|
8590
9052
|
|
|
8591
|
-
<input id="c-
|
|
9053
|
+
<input id="c-29-components-tooltip-props" class="tg tg-props" type="checkbox" hidden />
|
|
8592
9054
|
|
|
8593
9055
|
<div class="panels">
|
|
8594
9056
|
|
|
@@ -8760,9 +9222,9 @@ sideOffset?: number = 4</code></pre>
|
|
|
8760
9222
|
<div class="title">
|
|
8761
9223
|
<h2><span class="status-dot dot-ok"></span> ValidationList</h2>
|
|
8762
9224
|
<div class="badges">
|
|
8763
|
-
<label for="c-
|
|
9225
|
+
<label for="c-30-components-validationlist-props" class="badge ok as-toggle">2 prop types</label>
|
|
8764
9226
|
|
|
8765
|
-
<label for="c-
|
|
9227
|
+
<label for="c-30-components-validationlist-stories" class="badge ok as-toggle">4 stories</label>
|
|
8766
9228
|
|
|
8767
9229
|
|
|
8768
9230
|
</div>
|
|
@@ -8783,10 +9245,10 @@ your form validation; it does not own the input or block submission.</div>
|
|
|
8783
9245
|
<!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
|
|
8784
9246
|
|
|
8785
9247
|
|
|
8786
|
-
<input id="c-
|
|
9248
|
+
<input id="c-30-components-validationlist-stories" class="tg tg-stories" type="checkbox" hidden />
|
|
8787
9249
|
|
|
8788
9250
|
|
|
8789
|
-
<input id="c-
|
|
9251
|
+
<input id="c-30-components-validationlist-props" class="tg tg-props" type="checkbox" hidden />
|
|
8790
9252
|
|
|
8791
9253
|
<div class="panels">
|
|
8792
9254
|
|