@agentero/design-system 0.25.3 → 0.26.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.
@@ -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">25 components ok</span><span class="filter-pill ok" aria-disabled="true">194 stories ok</span></div>
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">26 components ok</span><span class="filter-pill ok" aria-disabled="true">203 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>3.7s</strong>.
597
+ Using <code>react-component-meta</code>. Generation took <strong>4.0s</strong>.
598
598
  </div>
599
599
  <h2 class="section-title">Components</h2>
600
600
  <div class="grid" role="list">
@@ -2019,7 +2019,7 @@ variant?: &quot;circle&quot; | &quot;square&quot; | &quot;pillow&quot; | &quot;p
2019
2019
  <div class="title">
2020
2020
  <h2><span class="status-dot dot-ok"></span> Button</h2>
2021
2021
  <div class="badges">
2022
- <label for="c-4-components-button-props" class="badge ok as-toggle">12 prop types</label>
2022
+ <label for="c-4-components-button-props" class="badge ok as-toggle">13 prop types</label>
2023
2023
 
2024
2024
  <label for="c-4-components-button-stories" class="badge ok as-toggle">11 stories</label>
2025
2025
 
@@ -2061,7 +2061,7 @@ without Button binding to any particular framework.</div>
2061
2061
  <div class="note ok">
2062
2062
  <div class="row">
2063
2063
  <span class="ex-name">Prop types <small>(react-component-meta)</small></span>
2064
- <span class="badge ok">12 prop types</span>
2064
+ <span class="badge ok">13 prop types</span>
2065
2065
  </div>
2066
2066
  <pre><code>Component: src/button/button.tsx::Button</code></pre>
2067
2067
  <pre><code>Props:</code></pre>
@@ -2139,6 +2139,18 @@ ref?: Ref&lt;HTMLButtonElement | HTMLAnchorElement&gt; | undefined
2139
2139
  */
2140
2140
  rounded?: boolean
2141
2141
 
2142
+ /**
2143
+ * When `true`, the button dips to 97% while held so the control answers the
2144
+ * pointer instead of only changing color. Defaults to `false`.
2145
+ *
2146
+ * Has no effect with `variant=&quot;link&quot;` (scaling bare text with no padding or
2147
+ * background reads as a wobble) or while the button is disabled or loading,
2148
+ * including the `asChild` anchor form, which stays keyboard-focusable and
2149
+ * would otherwise dip on Enter. The dip is gated behind `motion-safe`, so it
2150
+ * disappears under `prefers-reduced-motion`.
2151
+ */
2152
+ scaleOnPress?: boolean
2153
+
2142
2154
  /**
2143
2155
  * Control size. Defaults to `&#39;sm&#39;`.
2144
2156
  * - `xs` (24px) — dense toolbars, compact inline actions.
@@ -2186,8 +2198,8 @@ variant?: &quot;link&quot; | &quot;ghost&quot; | &quot;primary&quot; | &quot;sec
2186
2198
  </div>
2187
2199
  <div>Default args playground for Button</div>
2188
2200
  <div class="hint">Args-controlled playground. Toggle `variant`, `size`, `status`, `loading`,
2189
- `disabled`, and `rounded` from the Controls panel to explore every visual
2190
- combination of the Button.</div>
2201
+ `disabled`, `rounded`, and `scaleOnPress` from the Controls panel to explore
2202
+ every visual combination of the Button.</div>
2191
2203
  <pre><code>const Default = () =&gt; &lt;Button variant=&quot;primary&quot; size=&quot;sm&quot;&gt;{TEXT}&lt;/Button&gt;;</code></pre>
2192
2204
  </div>
2193
2205
  <div class="note ok">
@@ -2412,31 +2424,37 @@ router. In app code, swap the plain `&lt;a&gt;` below for your framework&#39;s L
2412
2424
  <span class="ex-name">Pressed</span>
2413
2425
  <span class="badge ok">story ok</span>
2414
2426
  </div>
2415
- <div>Press feedback dips the button, excluding `link` and disabled</div>
2416
- <div class="hint">Buttons dip to 97% while held so the control answers the pointer rather than
2417
- only changing color. Press and hold one below to feel it — the effect is
2418
- deliberately small, and if a quick click draws the eye it is too strong.
2427
+ <div>Opt-in press feedback via `scaleOnPress`, excluding `link` and disabled</div>
2428
+ <div class="hint">With `scaleOnPress`, a button dips to 97% while held so the control answers
2429
+ the pointer rather than only changing color. Press and hold one below to
2430
+ feel it — the effect is deliberately small, and if a quick click draws the
2431
+ eye it is too strong. It is off by default: pass the prop where the extra
2432
+ feedback is wanted.
2419
2433
 
2420
- `variant=&quot;link&quot;` is excluded: it has no padding or background, so scaling
2421
- bare text reads as a wobble rather than a button being pushed. Disabled
2422
- buttons are excluded too, including the `asChild` anchor form, which stays
2423
- keyboard-focusable and would otherwise dip on Enter. The whole effect is
2424
- gated behind `motion-safe`, so it disappears under `prefers-reduced-motion`.</div>
2434
+ `variant=&quot;link&quot;` is excluded even with the prop set: it has no padding or
2435
+ background, so scaling bare text reads as a wobble rather than a button
2436
+ being pushed. Disabled buttons are excluded too, including the `asChild`
2437
+ anchor form, which stays keyboard-focusable and would otherwise dip on
2438
+ Enter. The whole effect is gated behind `motion-safe`, so it disappears
2439
+ under `prefers-reduced-motion`.</div>
2425
2440
  <pre><code>const Pressed = () =&gt; (
2426
2441
  &lt;Stack&gt;
2427
2442
  &lt;Row&gt;
2428
2443
  {NON_LINK_VARIANTS.map(variant =&gt; (
2429
- &lt;Button key={variant} variant={variant}&gt;
2444
+ &lt;Button key={variant} variant={variant} scaleOnPress&gt;
2430
2445
  Press {variant}
2431
2446
  &lt;/Button&gt;
2432
2447
  ))}
2433
2448
  &lt;/Row&gt;
2434
2449
  &lt;Row&gt;
2435
- &lt;Button variant=&quot;link&quot;&gt;Link stays still&lt;/Button&gt;
2436
- &lt;Button variant=&quot;primary&quot; disabled&gt;
2450
+ &lt;Button variant=&quot;primary&quot;&gt;Opted out stays still&lt;/Button&gt;
2451
+ &lt;Button variant=&quot;link&quot; scaleOnPress&gt;
2452
+ Link stays still
2453
+ &lt;/Button&gt;
2454
+ &lt;Button variant=&quot;primary&quot; scaleOnPress disabled&gt;
2437
2455
  Disabled stays still
2438
2456
  &lt;/Button&gt;
2439
- &lt;Button asChild variant=&quot;secondary&quot; disabled&gt;
2457
+ &lt;Button asChild variant=&quot;secondary&quot; scaleOnPress disabled&gt;
2440
2458
  &lt;a href=&quot;/dashboard&quot;&gt;Disabled anchor stays still&lt;/a&gt;
2441
2459
  &lt;/Button&gt;
2442
2460
  &lt;/Row&gt;
@@ -4486,6 +4504,245 @@ trigger-dense UIs where an instant preview reads as more responsive.</div>
4486
4504
  </div>
4487
4505
 
4488
4506
 
4507
+ </div>
4508
+ </article>
4509
+ <article
4510
+ class="card
4511
+ no-error
4512
+ no-info
4513
+ no-story-error
4514
+ no-doc-error"
4515
+ role="listitem"
4516
+ aria-label="Input">
4517
+ <div class="head">
4518
+ <div class="title">
4519
+ <h2><span class="status-dot dot-ok"></span> Input</h2>
4520
+ <div class="badges">
4521
+ <label for="c-11-components-input-props" class="badge ok as-toggle">7 prop types</label>
4522
+
4523
+ <label for="c-11-components-input-stories" class="badge ok as-toggle">9 stories</label>
4524
+
4525
+
4526
+ </div>
4527
+ </div>
4528
+ <div class="meta" title="./src/input/input.stories.tsx">components-input · ./src/input/input.stories.tsx</div>
4529
+ <div>Base single-line text control, unaware of fields and form libraries</div>
4530
+ <div class="hint">Input is the base single-line text control. It is intentionally unaware of
4531
+ form fields and form libraries: `id`, `aria-invalid` and `aria-describedby`
4532
+ are plain props, set by a field wrapper or by hand.
4533
+
4534
+ There is no `status` prop. Mark the control `aria-invalid` and the
4535
+ destructive border follows, so the styling can never disagree with what
4536
+ assistive technology announces.</div>
4537
+ <div class="kv"><span class="chip">summary: Base single-line text control, unaware of fields and form libraries</span><span class="chip">example: &lt;Label htmlFor=&quot;email&quot;&gt;Email&lt;/Label&gt;
4538
+ &lt;Input id=&quot;email&quot; type=&quot;email&quot; placeholder=&quot;you@example.com&quot; /&gt;</span><span class="chip">example: &lt;Input id=&quot;email&quot; aria-invalid aria-describedby=&quot;email-error&quot; /&gt;
4539
+ &lt;span id=&quot;email-error&quot;&gt;Enter a valid email address.&lt;/span&gt;</span></div>
4540
+ </div>
4541
+
4542
+ <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
4543
+
4544
+
4545
+ <input id="c-11-components-input-stories" class="tg tg-stories" type="checkbox" hidden />
4546
+
4547
+
4548
+ <input id="c-11-components-input-props" class="tg tg-props" type="checkbox" hidden />
4549
+
4550
+ <div class="panels">
4551
+
4552
+
4553
+
4554
+ <div class="panel panel-props">
4555
+ <div class="note ok">
4556
+ <div class="row">
4557
+ <span class="ex-name">Prop types <small>(react-component-meta)</small></span>
4558
+ <span class="badge ok">7 prop types</span>
4559
+ </div>
4560
+ <pre><code>Component: src/input/input.tsx::Input</code></pre>
4561
+ <pre><code>Props:</code></pre>
4562
+ <pre><code>/**
4563
+ * Indicates the entered value does not conform to the format expected by the application.
4564
+ * Set this when the value fails validation: it drives the destructive border
4565
+ * and is what assistive technology announces. Point `aria-describedby` at
4566
+ * the error message so the two are read together.
4567
+ */
4568
+ aria-invalid?: boolean | &quot;true&quot; | &quot;false&quot; | &quot;grammar&quot; | &quot;spelling&quot; | undefined
4569
+
4570
+ /**
4571
+ * Blocks interaction, greys the control out and drops its shadow. The value
4572
+ * is not submitted. When the user still needs to read or copy the value,
4573
+ * use `readOnly` instead.
4574
+ */
4575
+ disabled?: boolean
4576
+
4577
+ /**
4578
+ * Short hint shown while the field is empty. It disappears on the first
4579
+ * keystroke, so it is never a substitute for a label.
4580
+ */
4581
+ placeholder?: string
4582
+
4583
+ /**
4584
+ * Keeps the value focusable and copyable but not editable, and still
4585
+ * submits it. Unlike `disabled`, it stays in the tab order.
4586
+ */
4587
+ readOnly?: boolean
4588
+
4589
+ /**
4590
+ * Marks the control required for both the browser and assistive technology.
4591
+ */
4592
+ required?: boolean
4593
+
4594
+ /**
4595
+ * Control height. Defaults to `&#39;md&#39;`.
4596
+ * - `sm` (32px) — dense layouts where vertical space is tight.
4597
+ * - `md` (40px) — standard form density.
4598
+ * - `lg` (48px) — low-density forms and larger touch targets. Also raises
4599
+ * the text to `base` and the corner radius to `lg`.
4600
+ */
4601
+ size?: &quot;sm&quot; | &quot;md&quot; | &quot;lg&quot;
4602
+
4603
+ /**
4604
+ * Native input type. Picks the on-screen keyboard on touch devices and the
4605
+ * browser&#39;s own parsing, so set it even when you validate yourself.
4606
+ * Defaults to `&#39;text&#39;`. Multi-line text is not one of the options — that is
4607
+ * a TextArea.
4608
+ */
4609
+ type?: HTMLInputTypeAttribute | undefined</code></pre>
4610
+ </div>
4611
+ </div>
4612
+
4613
+ <div class="panel panel-stories">
4614
+
4615
+
4616
+
4617
+ <div class="note ok">
4618
+ <div class="row">
4619
+ <span class="ex-name">Imports</span>
4620
+ </div>
4621
+ <pre><code>import { Input } from "@agentero/design-system";</code></pre>
4622
+ </div>
4623
+
4624
+
4625
+ <div class="note ok">
4626
+ <div class="row">
4627
+ <span class="ex-name">Default</span>
4628
+ <span class="badge ok">story ok</span>
4629
+ </div>
4630
+ <div>Default standalone input</div>
4631
+ <div class="hint">The default control at `md`, usable anywhere without a surrounding field.</div>
4632
+ <pre><code>const Default = () =&gt; &lt;Input type=&quot;text&quot; placeholder=&quot;Insert value&quot; aria-label=&quot;Value&quot; /&gt;;</code></pre>
4633
+ </div>
4634
+ <div class="note ok">
4635
+ <div class="row">
4636
+ <span class="ex-name">Small</span>
4637
+ <span class="badge ok">story ok</span>
4638
+ </div>
4639
+ <div>Small 32px control for dense layouts</div>
4640
+ <div class="hint">`sm` (32px) keeps dense layouts compact where vertical space is tight.</div>
4641
+ <pre><code>const Small = () =&gt; &lt;Input type=&quot;text&quot; placeholder=&quot;Insert value&quot; aria-label=&quot;Value&quot; size=&quot;sm&quot; /&gt;;</code></pre>
4642
+ </div>
4643
+ <div class="note ok">
4644
+ <div class="row">
4645
+ <span class="ex-name">Medium</span>
4646
+ <span class="badge ok">story ok</span>
4647
+ </div>
4648
+ <div>Medium 40px control, the default</div>
4649
+ <div class="hint">`md` (40px) is the default and covers standard form density.</div>
4650
+ <pre><code>const Medium = () =&gt; &lt;Input type=&quot;text&quot; placeholder=&quot;Insert value&quot; aria-label=&quot;Value&quot; size=&quot;md&quot; /&gt;;</code></pre>
4651
+ </div>
4652
+ <div class="note ok">
4653
+ <div class="row">
4654
+ <span class="ex-name">Large</span>
4655
+ <span class="badge ok">story ok</span>
4656
+ </div>
4657
+ <div>Large 48px control for low-density forms</div>
4658
+ <div class="hint">`lg` (48px) suits low-density forms and larger touch targets. It also raises
4659
+ the text to `base` and the corner radius to `lg`.</div>
4660
+ <pre><code>const Large = () =&gt; &lt;Input type=&quot;text&quot; placeholder=&quot;Insert value&quot; aria-label=&quot;Value&quot; size=&quot;lg&quot; /&gt;;</code></pre>
4661
+ </div>
4662
+ <div class="note ok">
4663
+ <div class="row">
4664
+ <span class="ex-name">All Sizes</span>
4665
+ <span class="badge ok">story ok</span>
4666
+ </div>
4667
+ <div>Visual comparison of the three input sizes</div>
4668
+ <div class="hint">All three heights together for visual comparison.</div>
4669
+ <pre><code>const AllSizes = () =&gt; &lt;div style={{ display: &#39;grid&#39;, gap: &#39;1rem&#39;, maxWidth: &#39;20rem&#39; }}&gt;
4670
+ &lt;Input type=&quot;text&quot; size=&quot;sm&quot; aria-label=&quot;Small input&quot; placeholder=&quot;sm — 32px&quot; /&gt;
4671
+ &lt;Input type=&quot;text&quot; size=&quot;md&quot; aria-label=&quot;Medium input&quot; placeholder=&quot;md — 40px&quot; /&gt;
4672
+ &lt;Input type=&quot;text&quot; size=&quot;lg&quot; aria-label=&quot;Large input&quot; placeholder=&quot;lg — 48px&quot; /&gt;
4673
+ &lt;/div&gt;;</code></pre>
4674
+ </div>
4675
+ <div class="note ok">
4676
+ <div class="row">
4677
+ <span class="ex-name">Types</span>
4678
+ <span class="badge ok">story ok</span>
4679
+ </div>
4680
+ <div>Common input types side by side</div>
4681
+ <div class="hint">A range of input types. The type picks the on-screen keyboard on touch
4682
+ devices and the browser&#39;s own parsing, so set it even when you validate
4683
+ yourself.</div>
4684
+ <pre><code>const Types = () =&gt; &lt;div style={{ display: &#39;grid&#39;, gap: &#39;1rem&#39;, maxWidth: &#39;20rem&#39; }}&gt;
4685
+ &lt;Input type=&quot;text&quot; aria-label=&quot;Text&quot; placeholder=&quot;Text&quot; /&gt;
4686
+ &lt;Input type=&quot;email&quot; aria-label=&quot;Email address&quot; placeholder=&quot;you@example.com&quot; /&gt;
4687
+ &lt;Input type=&quot;password&quot; aria-label=&quot;Password&quot; placeholder=&quot;Password&quot; /&gt;
4688
+ &lt;Input type=&quot;number&quot; aria-label=&quot;Amount&quot; placeholder=&quot;0&quot; /&gt;
4689
+ &lt;Input type=&quot;date&quot; aria-label=&quot;Date&quot; placeholder=&quot;&quot; /&gt;
4690
+ &lt;/div&gt;;</code></pre>
4691
+ </div>
4692
+ <div class="note ok">
4693
+ <div class="row">
4694
+ <span class="ex-name">Invalid</span>
4695
+ <span class="badge ok">story ok</span>
4696
+ </div>
4697
+ <div>Invalid state driven by aria-invalid</div>
4698
+ <div class="hint">The invalid treatment comes purely from `aria-invalid`, so the border can
4699
+ never disagree with what assistive technology announces. Point
4700
+ `aria-describedby` at the message so it is read out with the control.</div>
4701
+ <pre><code>const Invalid = () =&gt; &lt;div style={{ display: &#39;grid&#39;, gap: &#39;0.25rem&#39;, maxWidth: &#39;20rem&#39; }}&gt;
4702
+ &lt;Input
4703
+ type=&quot;email&quot;
4704
+ placeholder=&quot;Insert value&quot;
4705
+ aria-label=&quot;Email&quot;
4706
+ aria-invalid
4707
+ aria-describedby=&quot;email-error&quot;
4708
+ defaultValue=&quot;not-an-email&quot; /&gt;
4709
+ &lt;span id=&quot;email-error&quot;&gt;Enter a valid email address.&lt;/span&gt;
4710
+ &lt;/div&gt;;</code></pre>
4711
+ </div>
4712
+ <div class="note ok">
4713
+ <div class="row">
4714
+ <span class="ex-name">Disabled</span>
4715
+ <span class="badge ok">story ok</span>
4716
+ </div>
4717
+ <div>Disabled state</div>
4718
+ <div class="hint">A disabled input keeps its value readable but blocks interaction, drops its
4719
+ shadow and leaves the tab order.</div>
4720
+ <pre><code>const Disabled = () =&gt; &lt;Input
4721
+ type=&quot;text&quot;
4722
+ placeholder=&quot;Insert value&quot;
4723
+ aria-label=&quot;Value&quot;
4724
+ disabled
4725
+ defaultValue=&quot;Cannot be edited&quot; /&gt;;</code></pre>
4726
+ </div>
4727
+ <div class="note ok">
4728
+ <div class="row">
4729
+ <span class="ex-name">Read Only</span>
4730
+ <span class="badge ok">story ok</span>
4731
+ </div>
4732
+ <div>Read-only value that stays focusable and copyable</div>
4733
+ <div class="hint">Read-only inputs stay focusable and copyable and still submit their value —
4734
+ reach for this over `disabled` when the user needs to read or copy something
4735
+ they cannot change.</div>
4736
+ <pre><code>const ReadOnly = () =&gt; &lt;Input
4737
+ type=&quot;text&quot;
4738
+ placeholder=&quot;Insert value&quot;
4739
+ aria-label=&quot;Value&quot;
4740
+ readOnly
4741
+ defaultValue=&quot;Copy me, but do not change me&quot; /&gt;;</code></pre>
4742
+ </div>
4743
+ </div>
4744
+
4745
+
4489
4746
  </div>
4490
4747
  </article>
4491
4748
  <article
@@ -4500,9 +4757,9 @@ trigger-dense UIs where an instant preview reads as more responsive.</div>
4500
4757
  <div class="title">
4501
4758
  <h2><span class="status-dot dot-ok"></span> Label</h2>
4502
4759
  <div class="badges">
4503
- <label for="c-11-components-label-props" class="badge ok as-toggle">3 prop types</label>
4760
+ <label for="c-12-components-label-props" class="badge ok as-toggle">3 prop types</label>
4504
4761
 
4505
- <label for="c-11-components-label-stories" class="badge ok as-toggle">4 stories</label>
4762
+ <label for="c-12-components-label-stories" class="badge ok as-toggle">4 stories</label>
4506
4763
 
4507
4764
 
4508
4765
  </div>
@@ -4522,10 +4779,10 @@ still has to carry `required` / `aria-required`.</div>
4522
4779
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
4523
4780
 
4524
4781
 
4525
- <input id="c-11-components-label-stories" class="tg tg-stories" type="checkbox" hidden />
4782
+ <input id="c-12-components-label-stories" class="tg tg-stories" type="checkbox" hidden />
4526
4783
 
4527
4784
 
4528
- <input id="c-11-components-label-props" class="tg tg-props" type="checkbox" hidden />
4785
+ <input id="c-12-components-label-props" class="tg tg-props" type="checkbox" hidden />
4529
4786
 
4530
4787
  <div class="panels">
4531
4788
 
@@ -4623,9 +4880,9 @@ dropped, so a mistake never takes the page down.</div>
4623
4880
  <div class="title">
4624
4881
  <h2><span class="status-dot dot-ok"></span> Loading</h2>
4625
4882
  <div class="badges">
4626
- <label for="c-12-components-loading-props" class="badge ok as-toggle">1 prop type</label>
4883
+ <label for="c-13-components-loading-props" class="badge ok as-toggle">1 prop type</label>
4627
4884
 
4628
- <label for="c-12-components-loading-stories" class="badge ok as-toggle">7 stories</label>
4885
+ <label for="c-13-components-loading-stories" class="badge ok as-toggle">7 stories</label>
4629
4886
 
4630
4887
 
4631
4888
  </div>
@@ -4642,10 +4899,10 @@ parent font size via `em`-based size variants (`sm`, `md`, `lg`).</div>
4642
4899
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
4643
4900
 
4644
4901
 
4645
- <input id="c-12-components-loading-stories" class="tg tg-stories" type="checkbox" hidden />
4902
+ <input id="c-13-components-loading-stories" class="tg tg-stories" type="checkbox" hidden />
4646
4903
 
4647
4904
 
4648
- <input id="c-12-components-loading-props" class="tg tg-props" type="checkbox" hidden />
4905
+ <input id="c-13-components-loading-props" class="tg tg-props" type="checkbox" hidden />
4649
4906
 
4650
4907
  <div class="panels">
4651
4908
 
@@ -4796,9 +5053,9 @@ against the dark background.</div>
4796
5053
  <div class="title">
4797
5054
  <h2><span class="status-dot dot-ok"></span> Modal.Root</h2>
4798
5055
  <div class="badges">
4799
- <label for="c-13-components-modal-props" class="badge ok as-toggle">5 prop types</label>
5056
+ <label for="c-14-components-modal-props" class="badge ok as-toggle">5 prop types</label>
4800
5057
 
4801
- <label for="c-13-components-modal-stories" class="badge ok as-toggle">6 stories</label>
5058
+ <label for="c-14-components-modal-stories" class="badge ok as-toggle">6 stories</label>
4802
5059
 
4803
5060
 
4804
5061
  </div>
@@ -4844,10 +5101,10 @@ import { Modal } from &#39;@agentero/design-system/modal&#39;;
4844
5101
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
4845
5102
 
4846
5103
 
4847
- <input id="c-13-components-modal-stories" class="tg tg-stories" type="checkbox" hidden />
5104
+ <input id="c-14-components-modal-stories" class="tg tg-stories" type="checkbox" hidden />
4848
5105
 
4849
5106
 
4850
- <input id="c-13-components-modal-props" class="tg tg-props" type="checkbox" hidden />
5107
+ <input id="c-14-components-modal-props" class="tg tg-props" type="checkbox" hidden />
4851
5108
 
4852
5109
  <div class="panels">
4853
5110
 
@@ -5044,9 +5301,9 @@ announced as an `alertdialog`. Only the footer actions close it.</div>
5044
5301
  <div class="title">
5045
5302
  <h2><span class="status-dot dot-ok"></span> Pagination</h2>
5046
5303
  <div class="badges">
5047
- <label for="c-14-components-pagination-props" class="badge ok as-toggle">5 prop types</label>
5304
+ <label for="c-15-components-pagination-props" class="badge ok as-toggle">5 prop types</label>
5048
5305
 
5049
- <label for="c-14-components-pagination-stories" class="badge ok as-toggle">7 stories</label>
5306
+ <label for="c-15-components-pagination-stories" class="badge ok as-toggle">7 stories</label>
5050
5307
 
5051
5308
 
5052
5309
  </div>
@@ -5076,10 +5333,10 @@ const [page, setPage] = useState(1);
5076
5333
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
5077
5334
 
5078
5335
 
5079
- <input id="c-14-components-pagination-stories" class="tg tg-stories" type="checkbox" hidden />
5336
+ <input id="c-15-components-pagination-stories" class="tg tg-stories" type="checkbox" hidden />
5080
5337
 
5081
5338
 
5082
- <input id="c-14-components-pagination-props" class="tg tg-props" type="checkbox" hidden />
5339
+ <input id="c-15-components-pagination-props" class="tg tg-props" type="checkbox" hidden />
5083
5340
 
5084
5341
  <div class="panels">
5085
5342
 
@@ -5234,9 +5491,9 @@ entries summary follow along.</div>
5234
5491
  <div class="title">
5235
5492
  <h2><span class="status-dot dot-ok"></span> Popover.Root</h2>
5236
5493
  <div class="badges">
5237
- <label for="c-15-components-popover-props" class="badge ok as-toggle">5 prop types</label>
5494
+ <label for="c-16-components-popover-props" class="badge ok as-toggle">5 prop types</label>
5238
5495
 
5239
- <label for="c-15-components-popover-stories" class="badge ok as-toggle">4 stories</label>
5496
+ <label for="c-16-components-popover-stories" class="badge ok as-toggle">4 stories</label>
5240
5497
 
5241
5498
 
5242
5499
  </div>
@@ -5265,10 +5522,10 @@ import { Popover } from &#39;@agentero/design-system/popover&#39;;
5265
5522
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
5266
5523
 
5267
5524
 
5268
- <input id="c-15-components-popover-stories" class="tg tg-stories" type="checkbox" hidden />
5525
+ <input id="c-16-components-popover-stories" class="tg tg-stories" type="checkbox" hidden />
5269
5526
 
5270
5527
 
5271
- <input id="c-15-components-popover-props" class="tg tg-props" type="checkbox" hidden />
5528
+ <input id="c-16-components-popover-props" class="tg tg-props" type="checkbox" hidden />
5272
5529
 
5273
5530
  <div class="panels">
5274
5531
 
@@ -5423,9 +5680,9 @@ useful when the visual anchor differs from the toggle button.</div>
5423
5680
  <div class="title">
5424
5681
  <h2><span class="status-dot dot-ok"></span> Progress</h2>
5425
5682
  <div class="badges">
5426
- <label for="c-16-components-progress-props" class="badge ok as-toggle">4 prop types</label>
5683
+ <label for="c-17-components-progress-props" class="badge ok as-toggle">4 prop types</label>
5427
5684
 
5428
- <label for="c-16-components-progress-stories" class="badge ok as-toggle">4 stories</label>
5685
+ <label for="c-17-components-progress-stories" class="badge ok as-toggle">4 stories</label>
5429
5686
 
5430
5687
 
5431
5688
  </div>
@@ -5444,10 +5701,10 @@ with `currentColor`, so recolor it with a plain text class — e.g.
5444
5701
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
5445
5702
 
5446
5703
 
5447
- <input id="c-16-components-progress-stories" class="tg tg-stories" type="checkbox" hidden />
5704
+ <input id="c-17-components-progress-stories" class="tg tg-stories" type="checkbox" hidden />
5448
5705
 
5449
5706
 
5450
- <input id="c-16-components-progress-props" class="tg tg-props" type="checkbox" hidden />
5707
+ <input id="c-17-components-progress-props" class="tg tg-props" type="checkbox" hidden />
5451
5708
 
5452
5709
  <div class="panels">
5453
5710
 
@@ -5566,7 +5823,7 @@ percentage: number</code></pre>
5566
5823
  <div class="badges">
5567
5824
 
5568
5825
 
5569
- <label for="c-17-components-skeleton-stories" class="badge ok as-toggle">4 stories</label>
5826
+ <label for="c-18-components-skeleton-stories" class="badge ok as-toggle">4 stories</label>
5570
5827
 
5571
5828
 
5572
5829
  </div>
@@ -5583,7 +5840,7 @@ shape it with Tailwind classes to mirror the content it stands in for.</div>
5583
5840
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
5584
5841
 
5585
5842
 
5586
- <input id="c-17-components-skeleton-stories" class="tg tg-stories" type="checkbox" hidden />
5843
+ <input id="c-18-components-skeleton-stories" class="tg tg-stories" type="checkbox" hidden />
5587
5844
 
5588
5845
 
5589
5846
 
@@ -5679,9 +5936,9 @@ shape it with Tailwind classes to mirror the content it stands in for.</div>
5679
5936
  <div class="title">
5680
5937
  <h2><span class="status-dot dot-ok"></span> Switch</h2>
5681
5938
  <div class="badges">
5682
- <label for="c-18-components-switch-props" class="badge ok as-toggle">8 prop types</label>
5939
+ <label for="c-19-components-switch-props" class="badge ok as-toggle">8 prop types</label>
5683
5940
 
5684
- <label for="c-18-components-switch-stories" class="badge ok as-toggle">7 stories</label>
5941
+ <label for="c-19-components-switch-stories" class="badge ok as-toggle">7 stories</label>
5685
5942
 
5686
5943
 
5687
5944
  </div>
@@ -5697,10 +5954,10 @@ a Checkbox for a single boolean that applies instantly, and pair it with a
5697
5954
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
5698
5955
 
5699
5956
 
5700
- <input id="c-18-components-switch-stories" class="tg tg-stories" type="checkbox" hidden />
5957
+ <input id="c-19-components-switch-stories" class="tg tg-stories" type="checkbox" hidden />
5701
5958
 
5702
5959
 
5703
- <input id="c-18-components-switch-props" class="tg tg-props" type="checkbox" hidden />
5960
+ <input id="c-19-components-switch-props" class="tg tg-props" type="checkbox" hidden />
5704
5961
 
5705
5962
  <div class="panels">
5706
5963
 
@@ -5881,9 +6138,9 @@ size?: &quot;sm&quot; | &quot;md&quot;</code></pre>
5881
6138
  <div class="title">
5882
6139
  <h2><span class="status-dot dot-ok"></span> Table.Root</h2>
5883
6140
  <div class="badges">
5884
- <label for="c-19-components-table-props" class="badge ok as-toggle">6 prop types</label>
6141
+ <label for="c-20-components-table-props" class="badge ok as-toggle">6 prop types</label>
5885
6142
 
5886
- <label for="c-19-components-table-stories" class="badge ok as-toggle">9 stories</label>
6143
+ <label for="c-20-components-table-stories" class="badge ok as-toggle">9 stories</label>
5887
6144
 
5888
6145
 
5889
6146
  </div>
@@ -5914,10 +6171,10 @@ import { Table } from &#39;@agentero/design-system/table&#39;;
5914
6171
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
5915
6172
 
5916
6173
 
5917
- <input id="c-19-components-table-stories" class="tg tg-stories" type="checkbox" hidden />
6174
+ <input id="c-20-components-table-stories" class="tg tg-stories" type="checkbox" hidden />
5918
6175
 
5919
6176
 
5920
- <input id="c-19-components-table-props" class="tg tg-props" type="checkbox" hidden />
6177
+ <input id="c-20-components-table-props" class="tg tg-props" type="checkbox" hidden />
5921
6178
 
5922
6179
  <div class="panels">
5923
6180
 
@@ -6112,9 +6369,9 @@ import { Fragment } from "react";</code></pre>
6112
6369
  <div class="title">
6113
6370
  <h2><span class="status-dot dot-ok"></span> Tabs.Root</h2>
6114
6371
  <div class="badges">
6115
- <label for="c-20-components-tabs-props" class="badge ok as-toggle">9 prop types</label>
6372
+ <label for="c-21-components-tabs-props" class="badge ok as-toggle">9 prop types</label>
6116
6373
 
6117
- <label for="c-20-components-tabs-stories" class="badge ok as-toggle">8 stories</label>
6374
+ <label for="c-21-components-tabs-stories" class="badge ok as-toggle">8 stories</label>
6118
6375
 
6119
6376
 
6120
6377
  </div>
@@ -6145,10 +6402,10 @@ import { Tabs } from &#39;@agentero/design-system/tabs&#39;;
6145
6402
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
6146
6403
 
6147
6404
 
6148
- <input id="c-20-components-tabs-stories" class="tg tg-stories" type="checkbox" hidden />
6405
+ <input id="c-21-components-tabs-stories" class="tg tg-stories" type="checkbox" hidden />
6149
6406
 
6150
6407
 
6151
- <input id="c-20-components-tabs-props" class="tg tg-props" type="checkbox" hidden />
6408
+ <input id="c-21-components-tabs-props" class="tg tg-props" type="checkbox" hidden />
6152
6409
 
6153
6410
  <div class="panels">
6154
6411
 
@@ -6369,9 +6626,9 @@ tablist role is announced.</div>
6369
6626
  <div class="title">
6370
6627
  <h2><span class="status-dot dot-ok"></span> Tag</h2>
6371
6628
  <div class="badges">
6372
- <label for="c-21-components-tag-props" class="badge ok as-toggle">8 prop types</label>
6629
+ <label for="c-22-components-tag-props" class="badge ok as-toggle">8 prop types</label>
6373
6630
 
6374
- <label for="c-21-components-tag-stories" class="badge ok as-toggle">12 stories</label>
6631
+ <label for="c-22-components-tag-stories" class="badge ok as-toggle">12 stories</label>
6375
6632
 
6376
6633
 
6377
6634
  </div>
@@ -6390,10 +6647,10 @@ it an interactive link or button, which adds the pointer cursor and hover fill.<
6390
6647
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
6391
6648
 
6392
6649
 
6393
- <input id="c-21-components-tag-stories" class="tg tg-stories" type="checkbox" hidden />
6650
+ <input id="c-22-components-tag-stories" class="tg tg-stories" type="checkbox" hidden />
6394
6651
 
6395
6652
 
6396
- <input id="c-21-components-tag-props" class="tg tg-props" type="checkbox" hidden />
6653
+ <input id="c-22-components-tag-props" class="tg tg-props" type="checkbox" hidden />
6397
6654
 
6398
6655
  <div class="panels">
6399
6656
 
@@ -6818,9 +7075,9 @@ leading + trailing icons, and icon-only.</div>
6818
7075
  <div class="title">
6819
7076
  <h2><span class="status-dot dot-ok"></span> Toast</h2>
6820
7077
  <div class="badges">
6821
- <label for="c-22-components-toast-props" class="badge ok as-toggle">11 prop types</label>
7078
+ <label for="c-23-components-toast-props" class="badge ok as-toggle">11 prop types</label>
6822
7079
 
6823
- <label for="c-22-components-toast-stories" class="badge ok as-toggle">11 stories</label>
7080
+ <label for="c-23-components-toast-stories" class="badge ok as-toggle">11 stories</label>
6824
7081
 
6825
7082
 
6826
7083
  </div>
@@ -6839,10 +7096,10 @@ common feedback patterns.</div>
6839
7096
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
6840
7097
 
6841
7098
 
6842
- <input id="c-22-components-toast-stories" class="tg tg-stories" type="checkbox" hidden />
7099
+ <input id="c-23-components-toast-stories" class="tg tg-stories" type="checkbox" hidden />
6843
7100
 
6844
7101
 
6845
- <input id="c-22-components-toast-props" class="tg tg-props" type="checkbox" hidden />
7102
+ <input id="c-23-components-toast-props" class="tg tg-props" type="checkbox" hidden />
6846
7103
 
6847
7104
  <div class="panels">
6848
7105
 
@@ -7271,9 +7528,9 @@ action (e.g., a sync icon for a sync-in-progress toast).</div>
7271
7528
  <div class="title">
7272
7529
  <h2><span class="status-dot dot-ok"></span> Tooltip</h2>
7273
7530
  <div class="badges">
7274
- <label for="c-23-components-tooltip-props" class="badge ok as-toggle">12 prop types</label>
7531
+ <label for="c-24-components-tooltip-props" class="badge ok as-toggle">12 prop types</label>
7275
7532
 
7276
- <label for="c-23-components-tooltip-stories" class="badge ok as-toggle">5 stories</label>
7533
+ <label for="c-24-components-tooltip-stories" class="badge ok as-toggle">5 stories</label>
7277
7534
 
7278
7535
 
7279
7536
  </div>
@@ -7292,10 +7549,10 @@ on hover or focus.</div>
7292
7549
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
7293
7550
 
7294
7551
 
7295
- <input id="c-23-components-tooltip-stories" class="tg tg-stories" type="checkbox" hidden />
7552
+ <input id="c-24-components-tooltip-stories" class="tg tg-stories" type="checkbox" hidden />
7296
7553
 
7297
7554
 
7298
- <input id="c-23-components-tooltip-props" class="tg tg-props" type="checkbox" hidden />
7555
+ <input id="c-24-components-tooltip-props" class="tg tg-props" type="checkbox" hidden />
7299
7556
 
7300
7557
  <div class="panels">
7301
7558
 
@@ -7467,9 +7724,9 @@ sideOffset?: number = 4</code></pre>
7467
7724
  <div class="title">
7468
7725
  <h2><span class="status-dot dot-ok"></span> ValidationList</h2>
7469
7726
  <div class="badges">
7470
- <label for="c-24-components-validationlist-props" class="badge ok as-toggle">2 prop types</label>
7727
+ <label for="c-25-components-validationlist-props" class="badge ok as-toggle">2 prop types</label>
7471
7728
 
7472
- <label for="c-24-components-validationlist-stories" class="badge ok as-toggle">4 stories</label>
7729
+ <label for="c-25-components-validationlist-stories" class="badge ok as-toggle">4 stories</label>
7473
7730
 
7474
7731
 
7475
7732
  </div>
@@ -7490,10 +7747,10 @@ your form validation; it does not own the input or block submission.</div>
7490
7747
  <!-- ⬇️ Hidden toggles must be siblings BEFORE .panels -->
7491
7748
 
7492
7749
 
7493
- <input id="c-24-components-validationlist-stories" class="tg tg-stories" type="checkbox" hidden />
7750
+ <input id="c-25-components-validationlist-stories" class="tg tg-stories" type="checkbox" hidden />
7494
7751
 
7495
7752
 
7496
- <input id="c-24-components-validationlist-props" class="tg tg-props" type="checkbox" hidden />
7753
+ <input id="c-25-components-validationlist-props" class="tg tg-props" type="checkbox" hidden />
7497
7754
 
7498
7755
  <div class="panels">
7499
7756