@uni-design-system/uni-mcp 11.5.0 → 11.6.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.
@@ -7,16 +7,16 @@ import { z } from "zod";
7
7
  // src/data/uni-index.json
8
8
  var uni_index_default = {
9
9
  meta: {
10
- version: "11.5.0",
11
- builtAt: "2026-10-02T22:31:37.604Z",
10
+ version: "11.6.0",
11
+ builtAt: "2026-10-05T01:16:14.251Z",
12
12
  frameworks: [
13
13
  "angular"
14
14
  ],
15
15
  counts: {
16
- components: 87,
17
- tokens: 494,
16
+ components: 88,
17
+ tokens: 504,
18
18
  themes: 2,
19
- examples: 246,
19
+ examples: 254,
20
20
  utilities: 122
21
21
  }
22
22
  },
@@ -28,7 +28,7 @@ var uni_index_default = {
28
28
  summary: "",
29
29
  description: "",
30
30
  category: "feedback",
31
- version: "11.5.0",
31
+ version: "11.6.0",
32
32
  bindings: {
33
33
  angular: {
34
34
  importPath: "@uni-design-system/uni-angular",
@@ -118,7 +118,7 @@ var uni_index_default = {
118
118
  summary: "Horizontal application bar: project leading controls (menu button, logo) with the `leading` attribute, actions with `trailing` (pushed to the far edge), and either pass `title` or project custom center content.",
119
119
  description: "Horizontal application bar: project leading controls (menu button, logo) with the `leading` attribute, actions with `trailing` (pushed to the far edge), and either pass `title` or project custom center content. Surface, divider, height, typography and spacing all resolve from `appBar` tokens. Place it inside your page's `<header>` landmark.",
120
120
  category: "components",
121
- version: "11.5.0",
121
+ version: "11.6.0",
122
122
  bindings: {
123
123
  angular: {
124
124
  importPath: "@uni-design-system/uni-angular",
@@ -191,7 +191,7 @@ var uni_index_default = {
191
191
  summary: "Identity avatar with a graceful fallback chain: image \u2192 initials from `name` \u2192 themed symbol.",
192
192
  description: "Identity avatar with a graceful fallback chain: image \u2192 initials from `name` \u2192 themed symbol. Coloring, radius, typeface and sizes all resolve from `avatar` theme tokens; `variant` picks the container palette.",
193
193
  category: "components",
194
- version: "11.5.0",
194
+ version: "11.6.0",
195
195
  bindings: {
196
196
  angular: {
197
197
  importPath: "@uni-design-system/uni-angular",
@@ -286,7 +286,7 @@ var uni_index_default = {
286
286
  summary: "Overlapping stack of avatars.",
287
287
  description: "Overlapping stack of avatars. `max` collapses the overflow into a themed \u201C+N\u201D chip (itself a `uni-avatar`). Overlap and separator ring resolve from `avatarGroup` theme tokens.",
288
288
  category: "components",
289
- version: "11.5.0",
289
+ version: "11.6.0",
290
290
  bindings: {
291
291
  angular: {
292
292
  importPath: "@uni-design-system/uni-angular",
@@ -335,7 +335,7 @@ var uni_index_default = {
335
335
  summary: "",
336
336
  description: "",
337
337
  category: "primitives",
338
- version: "11.5.0",
338
+ version: "11.6.0",
339
339
  bindings: {
340
340
  angular: {
341
341
  importPath: "@uni-design-system/uni-angular",
@@ -416,7 +416,7 @@ var uni_index_default = {
416
416
  summary: "",
417
417
  description: "",
418
418
  category: "feedback",
419
- version: "11.5.0",
419
+ version: "11.6.0",
420
420
  bindings: {
421
421
  angular: {
422
422
  importPath: "@uni-design-system/uni-angular",
@@ -513,7 +513,7 @@ var uni_index_default = {
513
513
  summary: "",
514
514
  description: "",
515
515
  category: "directives",
516
- version: "11.5.0",
516
+ version: "11.6.0",
517
517
  bindings: {
518
518
  angular: {
519
519
  importPath: "@uni-design-system/uni-angular",
@@ -537,7 +537,7 @@ var uni_index_default = {
537
537
  summary: 'The base layout primitive, applied as an attribute to any element so semantics stay yours: `<main box-layout [grow]="1" padding="md">`.',
538
538
  description: 'The base layout primitive, applied as an attribute to any element so semantics stay yours: `<main box-layout [grow]="1" padding="md">`. It is a directive, so it composes freely \u2014 with another layout attribute (`<div stack-layout uni-text="body-1-long">`) and with a component\'s own host element (`<uni-card box-layout padding="lg">`); Angular merges the host `class` bindings rather than letting one win. Sizing convention (height/width/min/max/inset): a **number is px and needs a binding** \u2014 `[height]="420"`; a **plain attribute is a CSS length string** \u2014 `height="420px"`. Spacing/radius/color inputs take theme tokens.',
539
539
  category: "layout",
540
- version: "11.5.0",
540
+ version: "11.6.0",
541
541
  bindings: {
542
542
  angular: {
543
543
  importPath: "@uni-design-system/uni-angular",
@@ -945,7 +945,7 @@ var uni_index_default = {
945
945
  summary: 'WAI-ARIA breadcrumb: a `nav` landmark wrapping an ordered list; the last item is the current page (`aria-current="page"`), separators are decorative.',
946
946
  description: 'WAI-ARIA breadcrumb: a `nav` landmark wrapping an ordered list; the last item is the current page (`aria-current="page"`), separators are decorative. Items with `href` render as real links; without one they render as link-styled buttons emitting `itemClicked` \u2014 wire that to your router.',
947
947
  category: "components",
948
- version: "11.5.0",
948
+ version: "11.6.0",
949
949
  bindings: {
950
950
  angular: {
951
951
  importPath: "@uni-design-system/uni-angular",
@@ -1030,7 +1030,7 @@ var uni_index_default = {
1030
1030
  summary: "",
1031
1031
  description: "",
1032
1032
  category: "primitives",
1033
- version: "11.5.0",
1033
+ version: "11.6.0",
1034
1034
  bindings: {
1035
1035
  angular: {
1036
1036
  importPath: "@uni-design-system/uni-angular",
@@ -1190,7 +1190,7 @@ var uni_index_default = {
1190
1190
  summary: "",
1191
1191
  description: "",
1192
1192
  category: "primitives",
1193
- version: "11.5.0",
1193
+ version: "11.6.0",
1194
1194
  bindings: {
1195
1195
  angular: {
1196
1196
  importPath: "@uni-design-system/uni-angular",
@@ -1222,7 +1222,7 @@ var uni_index_default = {
1222
1222
  summary: "Inline month calendar: single-date or start\u2013end range selection, day markers (availability dots), min/max fences and disabled dates.",
1223
1223
  description: "Inline month calendar: single-date or start\u2013end range selection, day markers (availability dots), min/max fences and disabled dates. One tab stop with a roving-tabindex `role=\"grid\"`; every day is a real button named with its full date. Values are plain ISO strings (`'YYYY-MM-DD'`), never `Date` objects, so bindings are timezone-free and serializable. Selection and today colours come from the theme's `primary` role pair; geometry and glyphs come from the `calendar` theme entry.",
1224
1224
  category: "forms",
1225
- version: "11.5.0",
1225
+ version: "11.6.0",
1226
1226
  bindings: {
1227
1227
  angular: {
1228
1228
  importPath: "@uni-design-system/uni-angular",
@@ -1463,7 +1463,7 @@ var uni_index_default = {
1463
1463
  summary: "Anchored coach-mark panel that dims the page and cuts a spotlight hole around its target.",
1464
1464
  description: 'Anchored coach-mark panel that dims the page and cuts a spotlight hole around its target. Both the scrim and the panel are `popover="manual"` elements shown in order, so they stack deterministically in the top layer above every app z-index, and every scrim piece is CSS-anchor-positioned to the target \u2014 the hole tracks scroll/resize/layout with zero listeners. The panel is a non-modal `role="dialog"` (deliberately no `aria-modal`): focus moves into it on open, Tab runs a "duet loop" over the panel\'s focusables plus the spotlit target while it stays interactive, and on close focus returns to the pre-open element \u2014 unless the user moved into the target, where it stays. Storage-free by rule: `key` and the `dismissed` output are the "don\'t show again" hooks; persistence is the app\'s business (e.g. cdk local-storage).',
1465
1465
  category: "components",
1466
- version: "11.5.0",
1466
+ version: "11.6.0",
1467
1467
  bindings: {
1468
1468
  angular: {
1469
1469
  importPath: "@uni-design-system/uni-angular",
@@ -1683,7 +1683,7 @@ var uni_index_default = {
1683
1683
  summary: "",
1684
1684
  description: "",
1685
1685
  category: "layout",
1686
- version: "11.5.0",
1686
+ version: "11.6.0",
1687
1687
  bindings: {
1688
1688
  angular: {
1689
1689
  importPath: "@uni-design-system/uni-angular",
@@ -1745,7 +1745,7 @@ var uni_index_default = {
1745
1745
  summary: "",
1746
1746
  description: "",
1747
1747
  category: "layout",
1748
- version: "11.5.0",
1748
+ version: "11.6.0",
1749
1749
  bindings: {
1750
1750
  angular: {
1751
1751
  importPath: "@uni-design-system/uni-angular",
@@ -1786,7 +1786,7 @@ var uni_index_default = {
1786
1786
  summary: "",
1787
1787
  description: "",
1788
1788
  category: "layout",
1789
- version: "11.5.0",
1789
+ version: "11.6.0",
1790
1790
  bindings: {
1791
1791
  angular: {
1792
1792
  importPath: "@uni-design-system/uni-angular",
@@ -1843,7 +1843,7 @@ var uni_index_default = {
1843
1843
  summary: "",
1844
1844
  description: "",
1845
1845
  category: "layout",
1846
- version: "11.5.0",
1846
+ version: "11.6.0",
1847
1847
  bindings: {
1848
1848
  angular: {
1849
1849
  importPath: "@uni-design-system/uni-angular",
@@ -1898,7 +1898,7 @@ var uni_index_default = {
1898
1898
  summary: "",
1899
1899
  description: "",
1900
1900
  category: "forms",
1901
- version: "11.5.0",
1901
+ version: "11.6.0",
1902
1902
  bindings: {
1903
1903
  angular: {
1904
1904
  importPath: "@uni-design-system/uni-angular",
@@ -2120,7 +2120,7 @@ var uni_index_default = {
2120
2120
  summary: "Form-bound, closed-set, single-select autocomplete: `FormValueControl<T | null>` over object `Options<T>`, type-to-filter, commit-on-select.",
2121
2121
  description: "Form-bound, closed-set, single-select autocomplete: `FormValueControl<T | null>` over object `Options<T>`, type-to-filter, commit-on-select. Typing produces a draft \u2014 a filter, never a value; the value changes only when an option commits, `clear()` runs, or the model is written from outside. Select semantics, not search: a real label, a chevron, no magnifier, nothing submits. For short lists with no need to type, prefer `uni-select` \u2014 the value contract is identical, so swapping is a template-only change.",
2122
2122
  category: "forms",
2123
- version: "11.5.0",
2123
+ version: "11.6.0",
2124
2124
  bindings: {
2125
2125
  angular: {
2126
2126
  importPath: "@uni-design-system/uni-angular",
@@ -2258,6 +2258,14 @@ var uni_index_default = {
2258
2258
  default: "250",
2259
2259
  description: ""
2260
2260
  },
2261
+ {
2262
+ name: "openOnFocus",
2263
+ kind: "input",
2264
+ type: "boolean",
2265
+ required: false,
2266
+ default: "false",
2267
+ description: "Open the list when the field takes focus, not only on click or ArrowDown. Off by default \u2014 a form tabbed through should not spray popups."
2268
+ },
2261
2269
  {
2262
2270
  name: "query",
2263
2271
  kind: "output",
@@ -2406,7 +2414,7 @@ emptyText="No countries found"
2406
2414
  summary: "",
2407
2415
  description: "",
2408
2416
  category: "feedback",
2409
- version: "11.5.0",
2417
+ version: "11.6.0",
2410
2418
  bindings: {
2411
2419
  angular: {
2412
2420
  importPath: "@uni-design-system/uni-angular",
@@ -2446,6 +2454,283 @@ emptyText="No countries found"
2446
2454
  },
2447
2455
  relatedTokens: []
2448
2456
  },
2457
+ {
2458
+ id: "contact-input",
2459
+ name: "ContactInput",
2460
+ status: "stable",
2461
+ summary: "Recipient field for picking people: removable chips, a text input, and a list of known contacts that opens on focus and narrows as the user types \u2014 each row drawn as a person (avatar, name, address, a trailing note).",
2462
+ description: "Recipient field for picking people: removable chips, a text input, and a list of known contacts that opens on focus and narrows as the user types \u2014 each row drawn as a person (avatar, name, address, a trailing note). A thin composition of `uni-tag-input` with a mail client's manners baked in: ArrowDown walks the matches and Enter picks the active one, Backspace in an empty field removes the last person, and text that is neither a known contact nor a valid address stays in the field to be fixed (`rejected` says why). Reach for `uni-tag-input` itself when the tokens are not people.",
2463
+ category: "forms",
2464
+ version: "11.6.0",
2465
+ bindings: {
2466
+ angular: {
2467
+ importPath: "@uni-design-system/uni-angular",
2468
+ selectorOrTag: "uni-contact-input, ContactInput",
2469
+ api: [
2470
+ {
2471
+ name: "value",
2472
+ kind: "model",
2473
+ type: "UniContact[]",
2474
+ required: false,
2475
+ default: "[]",
2476
+ description: ""
2477
+ },
2478
+ {
2479
+ name: "disabled",
2480
+ kind: "input",
2481
+ type: "boolean",
2482
+ required: false,
2483
+ default: "false",
2484
+ description: ""
2485
+ },
2486
+ {
2487
+ name: "touched",
2488
+ kind: "model",
2489
+ type: "boolean",
2490
+ required: false,
2491
+ default: "false",
2492
+ description: ""
2493
+ },
2494
+ {
2495
+ name: "touch",
2496
+ kind: "output",
2497
+ type: "void",
2498
+ required: false,
2499
+ description: "Angular 22 marks the bound field touched through this output."
2500
+ },
2501
+ {
2502
+ name: "invalid",
2503
+ kind: "input",
2504
+ type: "boolean",
2505
+ required: false,
2506
+ default: "false",
2507
+ description: ""
2508
+ },
2509
+ {
2510
+ name: "dirty",
2511
+ kind: "input",
2512
+ type: "boolean",
2513
+ required: false,
2514
+ default: "false",
2515
+ description: ""
2516
+ },
2517
+ {
2518
+ name: "required",
2519
+ kind: "input",
2520
+ type: "boolean",
2521
+ required: false,
2522
+ default: "false",
2523
+ description: ""
2524
+ },
2525
+ {
2526
+ name: "ariaDescribedBy",
2527
+ kind: "input",
2528
+ type: "string",
2529
+ required: false,
2530
+ description: ""
2531
+ },
2532
+ {
2533
+ name: "label",
2534
+ kind: "input",
2535
+ type: "string",
2536
+ required: true,
2537
+ description: 'Accessible name for the field, e.g. "To".'
2538
+ },
2539
+ {
2540
+ name: "placeholder",
2541
+ kind: "input",
2542
+ type: "string",
2543
+ required: false,
2544
+ description: ""
2545
+ },
2546
+ {
2547
+ name: "contacts",
2548
+ kind: "input",
2549
+ type: "UniContact[]",
2550
+ required: false,
2551
+ default: "[]",
2552
+ description: "Everyone who can be suggested, in the order (and groups) to offer them."
2553
+ },
2554
+ {
2555
+ name: "allowCustom",
2556
+ kind: "input",
2557
+ type: "boolean",
2558
+ required: false,
2559
+ default: "true",
2560
+ description: "Accept a typed value that is not a known contact. On by default \u2014 a typed email address becomes a chip; `false` restricts the field to `contacts`."
2561
+ },
2562
+ {
2563
+ name: "filterLocally",
2564
+ kind: "input",
2565
+ type: "boolean",
2566
+ required: false,
2567
+ default: "true",
2568
+ description: "`false` renders `contacts` verbatim; narrow them app-side from `(query)` when the directory lives on a server."
2569
+ },
2570
+ {
2571
+ name: "autoHighlight",
2572
+ kind: "input",
2573
+ type: "boolean",
2574
+ required: false,
2575
+ default: "false",
2576
+ description: "Keep the first match highlighted so Enter or Tab picks it without arrowing. Off by default: nothing is highlighted until ArrowDown, and Enter commits what is typed."
2577
+ },
2578
+ {
2579
+ name: "debounceTime",
2580
+ kind: "input",
2581
+ type: "number",
2582
+ required: false,
2583
+ default: "250",
2584
+ description: ""
2585
+ },
2586
+ {
2587
+ name: "maxLength",
2588
+ kind: "input",
2589
+ type: "number | undefined",
2590
+ required: false,
2591
+ default: "undefined, { alias: 'max' }",
2592
+ description: ""
2593
+ },
2594
+ {
2595
+ name: "unframed",
2596
+ kind: "input",
2597
+ type: "unknown",
2598
+ required: false,
2599
+ default: "false, { transform: booleanAttribute }",
2600
+ description: "Drop the field chrome and render a bare row \u2014 an email client's To line."
2601
+ },
2602
+ {
2603
+ name: "autocomplete",
2604
+ kind: "input",
2605
+ type: "string",
2606
+ required: false,
2607
+ default: "'off'",
2608
+ description: "The text field's `autocomplete` token; see `uni-tag-input`."
2609
+ },
2610
+ {
2611
+ name: "tagVariant",
2612
+ kind: "input",
2613
+ type: "Variant",
2614
+ required: false,
2615
+ description: ""
2616
+ },
2617
+ {
2618
+ name: "tagTone",
2619
+ kind: "input",
2620
+ type: "TagTone",
2621
+ required: false,
2622
+ description: ""
2623
+ },
2624
+ {
2625
+ name: "tagSize",
2626
+ kind: "input",
2627
+ type: "Size",
2628
+ required: false,
2629
+ description: ""
2630
+ },
2631
+ {
2632
+ name: "added",
2633
+ kind: "output",
2634
+ type: "UniContact",
2635
+ required: false,
2636
+ description: ""
2637
+ },
2638
+ {
2639
+ name: "removed",
2640
+ kind: "output",
2641
+ type: "UniContact",
2642
+ required: false,
2643
+ description: ""
2644
+ },
2645
+ {
2646
+ name: "rejected",
2647
+ kind: "output",
2648
+ type: "UniTagRejection",
2649
+ required: false,
2650
+ description: "Typed text that did not become a person; an `invalid` one stays in the field."
2651
+ },
2652
+ {
2653
+ name: "query",
2654
+ kind: "output",
2655
+ type: "string",
2656
+ required: false,
2657
+ description: "Debounced typed text, for loading contacts remotely."
2658
+ },
2659
+ {
2660
+ name: "draftChange",
2661
+ kind: "output",
2662
+ type: "string",
2663
+ required: false,
2664
+ description: "Typed text on every change \u2014 e.g. to clear an error once it is edited."
2665
+ },
2666
+ {
2667
+ name: "variant",
2668
+ kind: "input",
2669
+ type: "Variant",
2670
+ required: false,
2671
+ default: "'primary'",
2672
+ description: "Style archetype from the theme. Inherited from BaseComponent."
2673
+ },
2674
+ {
2675
+ name: "size",
2676
+ kind: "input",
2677
+ type: "Size",
2678
+ required: false,
2679
+ default: "'lg'",
2680
+ description: "Size token from the theme. Inherited from BaseComponent. Only has an effect where the component theme defines a `sizes` block."
2681
+ }
2682
+ ]
2683
+ }
2684
+ },
2685
+ examples: [
2686
+ {
2687
+ title: "Primary",
2688
+ framework: "angular",
2689
+ code: "<!-- Storybook story: Primary -->\n<!-- args:\n{ value: [{ value: 'alice@uni.dev', name: 'Alice Chen' }] }\n-->"
2690
+ },
2691
+ {
2692
+ title: "Grouped Contacts",
2693
+ framework: "angular",
2694
+ code: "<!-- Storybook story: Grouped Contacts -->\n<!-- args:\n{ contacts: GROUPED }\n-->"
2695
+ },
2696
+ {
2697
+ title: "Unframed",
2698
+ framework: "angular",
2699
+ code: "<!-- Storybook story: Unframed -->\n<!-- args:\n{ unframed: true, value: [{ value: 'alice@uni.dev', name: 'Alice Chen' }] }\n-->"
2700
+ },
2701
+ {
2702
+ title: "Known Contacts Only",
2703
+ framework: "angular",
2704
+ code: "<!-- Storybook story: Known Contacts Only -->\n<!-- args:\n{ allowCustom: false, placeholder: 'Search people\u2026' }\n-->"
2705
+ },
2706
+ {
2707
+ title: "Disabled",
2708
+ framework: "angular",
2709
+ code: "<!-- Storybook story: Disabled -->\n<!-- args:\n{ disabled: true, value: [{ value: 'alice@uni.dev', name: 'Alice Chen' }] }\n-->"
2710
+ }
2711
+ ],
2712
+ guidelines: {
2713
+ whenToUse: "Recipient field for picking people: removable chips, a text input, and a list\nof known contacts that opens on focus and narrows as the user types. Each row\nis drawn as a person \u2014 avatar, name, address, and an optional note. Reach for\nit for a To line, a share dialog, assignees or mentions; for tokens that are\nnot people, use `uni-tag-input`, which this composes.\nIt behaves like a mail client: ArrowDown walks the matches and Enter picks\nthe active one, Backspace in an empty field removes the last person, and text\nthat is neither a known contact nor a valid address stays in the field to be\nfixed. Set `autoHighlight` to keep the first match active, so Enter or Tab\npicks it without arrowing. The chips come\nfrom the `tag` theme entry, the popup from `tagInput`, the field chrome from\n`input`, and the person row from `contactInput`.",
2714
+ dos: [
2715
+ "Order `contacts` most-relevant first; only the first few are shown.",
2716
+ "Set `filterLocally` to `false` and refresh `contacts` from `(query)` when",
2717
+ "Clear your error message from `(draftChange)` once the user edits the text."
2718
+ ],
2719
+ donts: [
2720
+ "Don't use it for tokens that are not people \u2014 that is `uni-tag-input`.",
2721
+ "Don't use it to pick one person from a closed list \u2014 that is `uni-combobox`.",
2722
+ "Don't rely on `autocomplete=\"off\"` alone if Chrome's address autofill still"
2723
+ ],
2724
+ accessibility: [
2725
+ 'The text input is `role="combobox"` over a `role="listbox"` popup; nothing',
2726
+ "The whole field is one tab stop. Enter picks the active contact, otherwise",
2727
+ 'Adds, removes and refusals announce through a `role="status"` live region.',
2728
+ "The control renders no validation message: handle `(rejected)`, render the",
2729
+ "`unframed` removes the focus ring along with the chrome; show focus on the"
2730
+ ]
2731
+ },
2732
+ relatedTokens: []
2733
+ },
2449
2734
  {
2450
2735
  id: "data-search",
2451
2736
  name: "DataSearch",
@@ -2453,7 +2738,7 @@ emptyText="No countries found"
2453
2738
  summary: "",
2454
2739
  description: "",
2455
2740
  category: "forms",
2456
- version: "11.5.0",
2741
+ version: "11.6.0",
2457
2742
  bindings: {
2458
2743
  angular: {
2459
2744
  importPath: "@uni-design-system/uni-angular",
@@ -2552,7 +2837,7 @@ emptyText="No countries found"
2552
2837
  summary: "",
2553
2838
  description: "",
2554
2839
  category: "data",
2555
- version: "11.5.0",
2840
+ version: "11.6.0",
2556
2841
  bindings: {
2557
2842
  angular: {
2558
2843
  importPath: "@uni-design-system/uni-angular",
@@ -2792,7 +3077,7 @@ emptyText="No countries found"
2792
3077
  summary: "Date field with free-typed parsing and a popup calendar.",
2793
3078
  description: "Date field with free-typed parsing and a popup calendar. Type `aug 20`, `8/20/2026` or `2026-08-20`, or pick from the grid \u2014 the form gets the same canonical `'YYYY-MM-DD'` string either way. Parsing is `Intl`-driven (locale digit order and month names, never hardcoded); unreadable text stays in the field, flagged, with a `rejected` event. The popup is a native popover hosting the same `uni-calendar` an app could render inline.",
2794
3079
  category: "forms",
2795
- version: "11.5.0",
3080
+ version: "11.6.0",
2796
3081
  bindings: {
2797
3082
  angular: {
2798
3083
  importPath: "@uni-design-system/uni-angular",
@@ -3023,7 +3308,7 @@ emptyText="No countries found"
3023
3308
  summary: "One field for a date and a time: a thin composer seating a uni-date-input and a uni-time-input in one input-box chrome under one label, yielding one combined `'YYYY-MM-DDTHH:mm'` value.",
3024
3309
  description: "One field for a date and a time: a thin composer seating a uni-date-input and a uni-time-input in one input-box chrome under one label, yielding one combined `'YYYY-MM-DDTHH:mm'` value. The value emits only when both parts are set \u2014 a time without a day is not an answer \u2014 and clearing the date clears it. With `slotsFor`, the time part stays disabled until a day is chosen and offers exactly that day's slots: the scheduling flow in one attribute. Two honest tab stops (it is two questions); apps needing a different arrangement compose the primitives directly.",
3025
3310
  category: "forms",
3026
- version: "11.5.0",
3311
+ version: "11.6.0",
3027
3312
  bindings: {
3028
3313
  angular: {
3029
3314
  importPath: "@uni-design-system/uni-angular",
@@ -3216,7 +3501,7 @@ emptyText="No countries found"
3216
3501
  summary: "Text input that emits `change` only after the user pauses typing.",
3217
3502
  description: "Text input that emits `change` only after the user pauses typing. Wears the shared input chrome (themed color, border, typeface, focus ring) via `uni-input-box`; project adornments with the `pre-input` / `post-input` slots, matching `uni-input`'s convention. The ARIA passthrough inputs let a wrapping composite (e.g. SearchInput's combobox) annotate the real input element.",
3218
3503
  category: "forms",
3219
- version: "11.5.0",
3504
+ version: "11.6.0",
3220
3505
  bindings: {
3221
3506
  angular: {
3222
3507
  importPath: "@uni-design-system/uni-angular",
@@ -3364,7 +3649,7 @@ emptyText="No countries found"
3364
3649
  summary: "Modal dialog on the native `<dialog>` element, laid out as three rows: an optional `[dialog-header]`, the projected body, an optional `[dialog-buttons]`.",
3365
3650
  description: "Modal dialog on the native `<dialog>` element, laid out as three rows: an optional `[dialog-header]`, the projected body, an optional `[dialog-buttons]`. **The surface is never the scroll container.** It is a flex column that is `overflow: clip` on both axes; the header and buttons pin while only the body row scrolls. Unlike the drawer, which is deliberately viewport-tall, the dialog stays content-sized: it has no `height`, and grows until it hits `calc(100dvh - 2 x inset)` \u2014 the point at which the body starts to scroll. The theme's `padding` insets all three rows (which is what makes the default header read as a pill floating inside the surface); `bodyPadding` pads the scrolling row alone.",
3366
3651
  category: "feedback",
3367
- version: "11.5.0",
3652
+ version: "11.6.0",
3368
3653
  bindings: {
3369
3654
  angular: {
3370
3655
  importPath: "@uni-design-system/uni-angular",
@@ -3517,7 +3802,7 @@ uni-dialog
3517
3802
  summary: "",
3518
3803
  description: "",
3519
3804
  category: "feedback",
3520
- version: "11.5.0",
3805
+ version: "11.6.0",
3521
3806
  bindings: {
3522
3807
  angular: {
3523
3808
  importPath: "@uni-design-system/uni-angular",
@@ -3621,7 +3906,7 @@ uni-dialog
3621
3906
  summary: "",
3622
3907
  description: "",
3623
3908
  category: "feedback",
3624
- version: "11.5.0",
3909
+ version: "11.6.0",
3625
3910
  bindings: {
3626
3911
  angular: {
3627
3912
  importPath: "@uni-design-system/uni-angular",
@@ -3662,7 +3947,7 @@ uni-dialog
3662
3947
  summary: "",
3663
3948
  description: "",
3664
3949
  category: "layout",
3665
- version: "11.5.0",
3950
+ version: "11.6.0",
3666
3951
  bindings: {
3667
3952
  angular: {
3668
3953
  importPath: "@uni-design-system/uni-angular",
@@ -3718,7 +4003,7 @@ uni-dialog
3718
4003
  summary: "",
3719
4004
  description: "",
3720
4005
  category: "directives",
3721
- version: "11.5.0",
4006
+ version: "11.6.0",
3722
4007
  bindings: {
3723
4008
  angular: {
3724
4009
  importPath: "@uni-design-system/uni-angular",
@@ -3750,7 +4035,7 @@ uni-dialog
3750
4035
  summary: "Drawer with two modes sharing one three-row layout: - `side` \u2014 an in-flow `<aside>` that pushes content (dashboard sidenav); opening/closing animates its width, and the divider border primitive separates it from the page.",
3751
4036
  description: "Drawer with two modes sharing one three-row layout: - `side` \u2014 an in-flow `<aside>` that pushes content (dashboard sidenav); opening/closing animates its width, and the divider border primitive separates it from the page. - `over` \u2014 a native `<dialog>` in the top layer: focus trap, Escape and scrim backdrop come from the platform (same machinery as `uni-dialog`), sliding in from its edge. **The panel is never the scroll container.** It is a flex column of three rows \u2014 an optional `[uni-drawer-header]`, the projected body, an optional `[uni-drawer-buttons]` \u2014 and only the body scrolls. The panel itself is `overflow: clip` on both axes. That is what lets a header and a save bar pin while a long form scrolls between them, and it is why the theme's `padding` option lands on the body row rather than the panel: padding on a scrolling box scrolls away with its content. Surface, width, divider, elevation, padding, backdrop, scrim and background all resolve from `drawer` theme tokens.",
3752
4037
  category: "components",
3753
- version: "11.5.0",
4038
+ version: "11.6.0",
3754
4039
  bindings: {
3755
4040
  angular: {
3756
4041
  importPath: "@uni-design-system/uni-angular",
@@ -3941,7 +4226,7 @@ initialFocus="input"
3941
4226
  summary: "The drawer's pinned footer action row \u2014 the save bar of an editor panel.",
3942
4227
  description: "The drawer's pinned footer action row \u2014 the save bar of an editor panel. Sits outside the scrolling body, so the actions stay reachable however long the form is. Mirrors `[dialog-buttons]`; the difference is posture, which lives in the `drawerButtons` theme options rather than here.",
3943
4228
  category: "primitives",
3944
- version: "11.5.0",
4229
+ version: "11.6.0",
3945
4230
  bindings: {
3946
4231
  angular: {
3947
4232
  importPath: "@uni-design-system/uni-angular",
@@ -4038,7 +4323,7 @@ initialFocus="input"
4038
4323
  summary: "The drawer's pinned header row: a title, and optionally a close button.",
4039
4324
  description: "The drawer's pinned header row: a title, and optionally a close button. Sits outside the scrolling body, so it stays put while the form beneath it moves. Reached either by projecting it \u2014 `<div uni-drawer-header>` \u2014 or implicitly, by giving `uni-drawer` a `headline`, in which case the drawer renders one of these itself.",
4040
4325
  category: "components",
4041
- version: "11.5.0",
4326
+ version: "11.6.0",
4042
4327
  bindings: {
4043
4328
  angular: {
4044
4329
  importPath: "@uni-design-system/uni-angular",
@@ -4086,7 +4371,7 @@ initialFocus="input"
4086
4371
  summary: "",
4087
4372
  description: "",
4088
4373
  category: "components",
4089
- version: "11.5.0",
4374
+ version: "11.6.0",
4090
4375
  bindings: {
4091
4376
  angular: {
4092
4377
  importPath: "@uni-design-system/uni-angular",
@@ -4220,7 +4505,7 @@ initialFocus="input"
4220
4505
  summary: "",
4221
4506
  description: "",
4222
4507
  category: "layout",
4223
- version: "11.5.0",
4508
+ version: "11.6.0",
4224
4509
  bindings: {
4225
4510
  angular: {
4226
4511
  importPath: "@uni-design-system/uni-angular",
@@ -4324,7 +4609,7 @@ initialFocus="input"
4324
4609
  summary: "",
4325
4610
  description: "",
4326
4611
  category: "layout",
4327
- version: "11.5.0",
4612
+ version: "11.6.0",
4328
4613
  bindings: {
4329
4614
  angular: {
4330
4615
  importPath: "@uni-design-system/uni-angular",
@@ -4395,7 +4680,7 @@ initialFocus="input"
4395
4680
  summary: "Trigger for a {@link UniExpandComponent} region.",
4396
4681
  description: "Trigger for a {@link UniExpandComponent} region. Two shapes, chosen by whether `label` is set: - **Icon only** (default) \u2014 the bare chevron, sized for a Card Header. - **Labelled** \u2014 chevron plus a label and optional muted sublabel, as a single full-width button. Most real disclosures need a name for the section, and building that row by hand is the thing this saves; it also makes the label the button's accessible name rather than adjacent text.",
4397
4682
  category: "layout",
4398
- version: "11.5.0",
4683
+ version: "11.6.0",
4399
4684
  bindings: {
4400
4685
  angular: {
4401
4686
  importPath: "@uni-design-system/uni-angular",
@@ -4480,7 +4765,7 @@ initialFocus="input"
4480
4765
  summary: "",
4481
4766
  description: "",
4482
4767
  category: "forms",
4483
- version: "11.5.0",
4768
+ version: "11.6.0",
4484
4769
  bindings: {
4485
4770
  angular: {
4486
4771
  importPath: "@uni-design-system/uni-angular",
@@ -4638,7 +4923,7 @@ initialFocus="input"
4638
4923
  summary: "",
4639
4924
  description: "",
4640
4925
  category: "layout",
4641
- version: "11.5.0",
4926
+ version: "11.6.0",
4642
4927
  bindings: {
4643
4928
  angular: {
4644
4929
  importPath: "@uni-design-system/uni-angular",
@@ -4735,7 +5020,7 @@ initialFocus="input"
4735
5020
  summary: "",
4736
5021
  description: "",
4737
5022
  category: "layout",
4738
- version: "11.5.0",
5023
+ version: "11.6.0",
4739
5024
  bindings: {
4740
5025
  angular: {
4741
5026
  importPath: "@uni-design-system/uni-angular",
@@ -4767,7 +5052,7 @@ initialFocus="input"
4767
5052
  summary: "",
4768
5053
  description: "",
4769
5054
  category: "primitives",
4770
- version: "11.5.0",
5055
+ version: "11.6.0",
4771
5056
  bindings: {
4772
5057
  angular: {
4773
5058
  importPath: "@uni-design-system/uni-angular",
@@ -4827,7 +5112,7 @@ initialFocus="input"
4827
5112
  summary: "",
4828
5113
  description: "",
4829
5114
  category: "primitives",
4830
- version: "11.5.0",
5115
+ version: "11.6.0",
4831
5116
  bindings: {
4832
5117
  angular: {
4833
5118
  importPath: "@uni-design-system/uni-angular",
@@ -4930,7 +5215,7 @@ initialFocus="input"
4930
5215
  summary: "A button that lives inside a sentence.",
4931
5216
  description: "A button that lives inside a sentence. Every other button in the library owns a box. Even `ghost` is a flex box with a hit area, horizontal padding and a type scale of its own, so dropping one into a sentence takes it out of the run of text entirely. This one inherits that type \u2014 family, size, weight, line height and colour \u2014 and adds no padding, so a paragraph reads as one continuous run with an action in the middle of it. It is always a real `<button>`: it can *look* like a link (`underline`, `link`) without claiming to be navigation, so Enter and Space activate it and assistive tech announces a button rather than an unfollowable link. A glyph may sit alongside the label without disturbing that: it is sized in `em`, so it scales with the type it lands in rather than pinning a px size into someone else's paragraph. One limit comes from the element itself. Browsers blockify a `<button>` to `inline-block` whatever `display` it asks for, so the control is an atomic inline box: its own label wraps inside it, but the run cannot split across a line break the way the words around it do. `display: contents` would buy that at the cost of the button being focusable at all, which is not a trade worth making \u2014 keep labels to a few words, which is what an inline action wants anyway.",
4932
5217
  category: "primitives",
4933
- version: "11.5.0",
5218
+ version: "11.6.0",
4934
5219
  bindings: {
4935
5220
  angular: {
4936
5221
  importPath: "@uni-design-system/uni-angular",
@@ -5045,7 +5330,7 @@ initialFocus="input"
5045
5330
  summary: "",
5046
5331
  description: "",
5047
5332
  category: "forms",
5048
- version: "11.5.0",
5333
+ version: "11.6.0",
5049
5334
  bindings: {
5050
5335
  angular: {
5051
5336
  importPath: "@uni-design-system/uni-angular",
@@ -5330,7 +5615,7 @@ initialFocus="input"
5330
5615
  summary: "",
5331
5616
  description: "",
5332
5617
  category: "forms",
5333
- version: "11.5.0",
5618
+ version: "11.6.0",
5334
5619
  bindings: {
5335
5620
  angular: {
5336
5621
  importPath: "@uni-design-system/uni-angular",
@@ -5451,7 +5736,7 @@ initialFocus="input"
5451
5736
  summary: "",
5452
5737
  description: "",
5453
5738
  category: "components",
5454
- version: "11.5.0",
5739
+ version: "11.6.0",
5455
5740
  bindings: {
5456
5741
  angular: {
5457
5742
  importPath: "@uni-design-system/uni-angular",
@@ -5521,7 +5806,7 @@ initialFocus="input"
5521
5806
  summary: "",
5522
5807
  description: "",
5523
5808
  category: "layout",
5524
- version: "11.5.0",
5809
+ version: "11.6.0",
5525
5810
  bindings: {
5526
5811
  angular: {
5527
5812
  importPath: "@uni-design-system/uni-angular",
@@ -5625,7 +5910,7 @@ initialFocus="input"
5625
5910
  summary: "",
5626
5911
  description: "",
5627
5912
  category: "layout",
5628
- version: "11.5.0",
5913
+ version: "11.6.0",
5629
5914
  bindings: {
5630
5915
  angular: {
5631
5916
  importPath: "@uni-design-system/uni-angular",
@@ -5707,7 +5992,7 @@ initialFocus="input"
5707
5992
  summary: "",
5708
5993
  description: "",
5709
5994
  category: "forms",
5710
- version: "11.5.0",
5995
+ version: "11.6.0",
5711
5996
  bindings: {
5712
5997
  angular: {
5713
5998
  importPath: "@uni-design-system/uni-angular",
@@ -5801,7 +6086,7 @@ initialFocus="input"
5801
6086
  summary: "",
5802
6087
  description: "",
5803
6088
  category: "forms",
5804
- version: "11.5.0",
6089
+ version: "11.6.0",
5805
6090
  bindings: {
5806
6091
  angular: {
5807
6092
  importPath: "@uni-design-system/uni-angular",
@@ -5980,7 +6265,7 @@ initialFocus="input"
5980
6265
  summary: "",
5981
6266
  description: "",
5982
6267
  category: "feedback",
5983
- version: "11.5.0",
6268
+ version: "11.6.0",
5984
6269
  bindings: {
5985
6270
  angular: {
5986
6271
  importPath: "@uni-design-system/uni-angular",
@@ -6240,7 +6525,7 @@ initialFocus="input"
6240
6525
  summary: "",
6241
6526
  description: "",
6242
6527
  category: "feedback",
6243
- version: "11.5.0",
6528
+ version: "11.6.0",
6244
6529
  bindings: {
6245
6530
  angular: {
6246
6531
  importPath: "@uni-design-system/uni-angular",
@@ -6264,7 +6549,7 @@ initialFocus="input"
6264
6549
  summary: "Numeric field with locale-aware parsing, `Intl` formatting on commit, prefix/suffix adornments and steppers that hold to repeat.",
6265
6550
  description: 'Numeric field with locale-aware parsing, `Intl` formatting on commit, prefix/suffix adornments and steppers that hold to repeat. Not `<input type="number">`, and the first reason is a data-loss bug: per the HTML value sanitization algorithm, a number input whose text is not a valid floating-point number reports `value === \'\'`. Type `12,50` as most of Europe does, or paste `1,234.56` from a spreadsheet, and the app reads an empty field. This is `type="text"` with `role="spinbutton"`, which is the only way to keep the user\'s malformed text on screen and tell them about it. Chrome comes from `uni-input-box`, so error, disabled and focus states match every other field. All arithmetic runs on the cdk\'s exact decimal helpers.',
6266
6551
  category: "forms",
6267
- version: "11.5.0",
6552
+ version: "11.6.0",
6268
6553
  bindings: {
6269
6554
  angular: {
6270
6555
  importPath: "@uni-design-system/uni-angular",
@@ -6690,7 +6975,7 @@ initialFocus="input"
6690
6975
  summary: "Two linked numeric fields in one chrome, with one `{ start, end }` value \u2014 price filters, thresholds, tolerances.",
6691
6976
  description: "Two linked numeric fields in one chrome, with one `{ start, end }` value \u2014 price filters, thresholds, tolerances. `start`/`end` deliberately match `UniDateRange`, so the library has one range vocabulary, and they avoid colliding with the `min`/`max` **inputs**, which mean the fence rather than the value. It owns its commit path rather than nesting two `uni-number-input`s, because the two behaviours the spec asks for need *different* bounds: a stepper must be fenced at the other end, while a typed commit must reach the parent un-clamped so a backwards range can be swapped instead of destroyed. A child field applies one bound pair to both. The arithmetic, parsing and formatting are still the cdk's, shared with every other numeric control.",
6692
6977
  category: "forms",
6693
- version: "11.5.0",
6978
+ version: "11.6.0",
6694
6979
  bindings: {
6695
6980
  angular: {
6696
6981
  importPath: "@uni-design-system/uni-angular",
@@ -6981,7 +7266,7 @@ initialFocus="input"
6981
7266
  summary: "",
6982
7267
  description: "",
6983
7268
  category: "data",
6984
- version: "11.5.0",
7269
+ version: "11.6.0",
6985
7270
  bindings: {
6986
7271
  angular: {
6987
7272
  importPath: "@uni-design-system/uni-angular",
@@ -7082,7 +7367,7 @@ initialFocus="input"
7082
7367
  summary: "Anchored, top-layer panel on the native `popover` element \u2014 the browser owns positioning (CSS anchor positioning), stacking, and, in rich mode, light dismissal.",
7083
7368
  description: 'Anchored, top-layer panel on the native `popover` element \u2014 the browser owns positioning (CSS anchor positioning), stacking, and, in rich mode, light dismissal. Two modes share one implementation: - `rich` (default): a click-toggled disclosure. The projected `[trigger]` carries `aria-expanded`/`aria-controls`; with no trigger content the app drives `open` and no element claims controller ARIA. Focus stays on the trigger (APG disclosure) unless the panel marks an `[autofocus]` field, and returns to the trigger on close. - `tooltip`: hover/focus-triggered, `role="tooltip"` + `aria-describedby`, WCAG 1.4.13 dismissable/hoverable/persistent. Content must not contain focusable elements. Anchoring and control are separate: `anchor` re-anchors the panel to any element (or id) while the trigger keeps the disclosure semantics.',
7084
7369
  category: "layout",
7085
- version: "11.5.0",
7370
+ version: "11.6.0",
7086
7371
  bindings: {
7087
7372
  angular: {
7088
7373
  importPath: "@uni-design-system/uni-angular",
@@ -7274,7 +7559,7 @@ initialFocus="input"
7274
7559
  summary: "",
7275
7560
  description: "",
7276
7561
  category: "feedback",
7277
- version: "11.5.0",
7562
+ version: "11.6.0",
7278
7563
  bindings: {
7279
7564
  angular: {
7280
7565
  importPath: "@uni-design-system/uni-angular",
@@ -7338,7 +7623,7 @@ initialFocus="input"
7338
7623
  summary: "",
7339
7624
  description: "",
7340
7625
  category: "feedback",
7341
- version: "11.5.0",
7626
+ version: "11.6.0",
7342
7627
  bindings: {
7343
7628
  angular: {
7344
7629
  importPath: "@uni-design-system/uni-angular",
@@ -7410,7 +7695,7 @@ initialFocus="input"
7410
7695
  summary: "`\u2212 3 +` for cart lines, table cells and seat counts: the numeric core with no field chrome, no label and no room for either.",
7411
7696
  description: '`\u2212 3 +` for cart lines, table cells and seat counts: the numeric core with no field chrome, no label and no room for either. A separate component rather than a `chrome="bare"` flag on `uni-number-input`, because this control is defined by what it does *not* have \u2014 presets, affixes, expressions, four stepper layouts \u2014 and eight inputs are easier to write correctly than forty with a list of which ones to leave alone. The arithmetic, parsing and hold-to-repeat are the cdk\'s, shared with the field, so `1,200` and the keyboard map behave identically in both. The middle stays a real input by default: typing `12` beats tapping `+` eleven times. `editable=false` is for read-mostly tables.',
7412
7697
  category: "forms",
7413
- version: "11.5.0",
7698
+ version: "11.6.0",
7414
7699
  bindings: {
7415
7700
  angular: {
7416
7701
  importPath: "@uni-design-system/uni-angular",
@@ -7613,7 +7898,7 @@ initialFocus="input"
7613
7898
  summary: "",
7614
7899
  description: "",
7615
7900
  category: "forms",
7616
- version: "11.5.0",
7901
+ version: "11.6.0",
7617
7902
  bindings: {
7618
7903
  angular: {
7619
7904
  importPath: "@uni-design-system/uni-angular",
@@ -7842,7 +8127,7 @@ initialFocus="input"
7842
8127
  summary: "Content for each of a radio group's options, in place of the plain label string.",
7843
8128
  description: 'Content for each of a radio group\'s options, in place of the plain label string. A group renders N labels from an `options` array, so it cannot take `<ng-content />` the way `uni-checkbox` and `uni-toggle` do \u2014 there is no single slot to project into. A template is the shape that survives the repetition: it is instantiated once per option and handed that option, so a row can carry a description, a price or a badge and still be part of the `<label>` that drives the input. ```html <uni-radio [options]="plans"> <ng-template uniRadioOption let-option> <span uni-text="body-2-long">{{ option.label }}</span> </ng-template> </uni-radio> ```',
7844
8129
  category: "forms",
7845
- version: "11.5.0",
8130
+ version: "11.6.0",
7846
8131
  bindings: {
7847
8132
  angular: {
7848
8133
  importPath: "@uni-design-system/uni-angular",
@@ -7866,7 +8151,7 @@ initialFocus="input"
7866
8151
  summary: "",
7867
8152
  description: "",
7868
8153
  category: "directives",
7869
- version: "11.5.0",
8154
+ version: "11.6.0",
7870
8155
  bindings: {
7871
8156
  angular: {
7872
8157
  importPath: "@uni-design-system/uni-angular",
@@ -7890,7 +8175,7 @@ initialFocus="input"
7890
8175
  summary: "",
7891
8176
  description: "",
7892
8177
  category: "layout",
7893
- version: "11.5.0",
8178
+ version: "11.6.0",
7894
8179
  bindings: {
7895
8180
  angular: {
7896
8181
  importPath: "@uni-design-system/uni-angular",
@@ -7945,7 +8230,7 @@ initialFocus="input"
7945
8230
  summary: "Native scroll area with theme-driven scrollbar styling.",
7946
8231
  description: "Native scroll area with theme-driven scrollbar styling. Scrollbars are styled entirely through Emotion-generated CSS: `::-webkit-scrollbar` rules cover Chromium/Safari, with a `scrollbar-width`/`scrollbar-color` fallback for Firefox.",
7947
8232
  category: "layout",
7948
- version: "11.5.0",
8233
+ version: "11.6.0",
7949
8234
  bindings: {
7950
8235
  angular: {
7951
8236
  importPath: "@uni-design-system/uni-angular",
@@ -8092,7 +8377,7 @@ initialFocus="input"
8092
8377
  summary: "Generic search field: shared input chrome with a leading magnifier, a clear button while there's a query, Enter to submit, and optional type-ahead \u2014 pass `suggestions` (refresh them from `change`) and the field becomes an ARIA combobox with a keyboard-navigable listbox.",
8093
8378
  description: "Generic search field: shared input chrome with a leading magnifier, a clear button while there's a query, Enter to submit, and optional type-ahead \u2014 pass `suggestions` (refresh them from `change`) and the field becomes an ARIA combobox with a keyboard-navigable listbox. Escape closes the list first, then clears the query.",
8094
8379
  category: "forms",
8095
- version: "11.5.0",
8380
+ version: "11.6.0",
8096
8381
  bindings: {
8097
8382
  angular: {
8098
8383
  importPath: "@uni-design-system/uni-angular",
@@ -8136,6 +8421,14 @@ initialFocus="input"
8136
8421
  default: "[]",
8137
8422
  description: "Type-ahead entries. Keep them fresh from `change` emissions; the list shows while the field has focus and entries exist."
8138
8423
  },
8424
+ {
8425
+ name: "openOnFocus",
8426
+ kind: "input",
8427
+ type: "boolean",
8428
+ required: false,
8429
+ default: "false",
8430
+ description: "Show the suggestions on focus and on click, before anything is typed."
8431
+ },
8139
8432
  {
8140
8433
  name: "searchChange",
8141
8434
  kind: "output",
@@ -8219,7 +8512,7 @@ initialFocus="input"
8219
8512
  summary: "",
8220
8513
  description: "",
8221
8514
  category: "forms",
8222
- version: "11.5.0",
8515
+ version: "11.6.0",
8223
8516
  bindings: {
8224
8517
  angular: {
8225
8518
  importPath: "@uni-design-system/uni-angular",
@@ -8389,7 +8682,7 @@ initialFocus="input"
8389
8682
  summary: "Loading placeholder painted with surface tokens.",
8390
8683
  description: "Loading placeholder painted with surface tokens. `text` renders one or more lines (the last line shortened, as real text would be), `rect` and `circle` render fixed shapes. The shimmer only animates when the user allows motion; it degrades to static blocks under `prefers-reduced-motion`. Color and radius are theme options with per-instance overrides, because one app routinely needs several: skeletons on a card and on the page background want different tints, and a pill placeholder wants a different corner than the text bars beside it.",
8391
8684
  category: "components",
8392
- version: "11.5.0",
8685
+ version: "11.6.0",
8393
8686
  bindings: {
8394
8687
  angular: {
8395
8688
  importPath: "@uni-design-system/uni-angular",
@@ -8540,7 +8833,7 @@ initialFocus="input"
8540
8833
  summary: "Bounded numeric input by pointer, for values where the *position* is the information: volume, opacity, weightings, price filters.",
8541
8834
  description: "Bounded numeric input by pointer, for values where the *position* is the information: volume, opacity, weightings, price filters. Custom thumbs rather than `<input type=\"range\">`, which the previous version used: one native range input cannot carry two thumbs, marks or a tooltip, and a second component for the range case would mean two keyboard maps to keep in step. The step model and the keyboard map are the cdk's, shared with the numeric fields, so nothing new is learned moving between them. All arithmetic on values runs through the cdk's exact decimal helpers \u2014 stepping `0.1` never yields `0.30000000000000004`. Only pointer *positions* use floats, and they are snapped to the grid before becoming a value.",
8542
8835
  category: "forms",
8543
- version: "11.5.0",
8836
+ version: "11.6.0",
8544
8837
  bindings: {
8545
8838
  angular: {
8546
8839
  importPath: "@uni-design-system/uni-angular",
@@ -8817,7 +9110,7 @@ initialFocus="input"
8817
9110
  summary: "",
8818
9111
  description: "",
8819
9112
  category: "feedback",
8820
- version: "11.5.0",
9113
+ version: "11.6.0",
8821
9114
  bindings: {
8822
9115
  angular: {
8823
9116
  importPath: "@uni-design-system/uni-angular",
@@ -8929,7 +9222,7 @@ initialFocus="input"
8929
9222
  summary: "",
8930
9223
  description: "",
8931
9224
  category: "data",
8932
- version: "11.5.0",
9225
+ version: "11.6.0",
8933
9226
  bindings: {
8934
9227
  angular: {
8935
9228
  importPath: "@uni-design-system/uni-angular",
@@ -8988,7 +9281,7 @@ initialFocus="input"
8988
9281
  summary: "",
8989
9282
  description: "",
8990
9283
  category: "layout",
8991
- version: "11.5.0",
9284
+ version: "11.6.0",
8992
9285
  bindings: {
8993
9286
  angular: {
8994
9287
  importPath: "@uni-design-system/uni-angular",
@@ -9043,7 +9336,7 @@ initialFocus="input"
9043
9336
  summary: 'KPI stat tile: muted label, large value (numbers auto-compact: 48234 \u2192 "48.2K"), an optional delta whose ink is decided by *direction \xD7 whether up is good* (never direction alone \u2014 churn going down is good news), and an optional decorative sparkline.',
9044
9337
  description: 'KPI stat tile: muted label, large value (numbers auto-compact: 48234 \u2192 "48.2K"), an optional delta whose ink is decided by *direction \xD7 whether up is good* (never direction alone \u2014 churn going down is good news), and an optional decorative sparkline. Frame, typography and inks are all `stat` theme tokens.',
9045
9338
  category: "components",
9046
- version: "11.5.0",
9339
+ version: "11.6.0",
9047
9340
  bindings: {
9048
9341
  angular: {
9049
9342
  importPath: "@uni-design-system/uni-angular",
@@ -9161,7 +9454,7 @@ initialFocus="input"
9161
9454
  summary: "",
9162
9455
  description: "",
9163
9456
  category: "primitives",
9164
- version: "11.5.0",
9457
+ version: "11.6.0",
9165
9458
  bindings: {
9166
9459
  angular: {
9167
9460
  importPath: "@uni-design-system/uni-angular",
@@ -9250,7 +9543,7 @@ initialFocus="input"
9250
9543
  summary: "One tab inside `uni-tabs`: a label for the tablist plus projected panel content.",
9251
9544
  description: "One tab inside `uni-tabs`: a label for the tablist plus projected panel content. Content is captured in a template and only instantiated while the tab is selected, so inactive panels cost nothing.",
9252
9545
  category: "components",
9253
- version: "11.5.0",
9546
+ version: "11.6.0",
9254
9547
  bindings: {
9255
9548
  angular: {
9256
9549
  importPath: "@uni-design-system/uni-angular",
@@ -9290,7 +9583,7 @@ initialFocus="input"
9290
9583
  summary: "WAI-ARIA tabs: roving tabindex, automatic activation (arrow keys move focus and select), Home/End, disabled tabs skipped.",
9291
9584
  description: "WAI-ARIA tabs: roving tabindex, automatic activation (arrow keys move focus and select), Home/End, disabled tabs skipped. Only the selected panel is instantiated. All styling resolves from `tabs` theme option tokens. A tab switch is softened by the `panelMotion` option: the incoming content fades in while the panel animates from the outgoing content's height to its own. The new content is live from the first frame \u2014 nothing waits on the animation.",
9292
9585
  category: "components",
9293
- version: "11.5.0",
9586
+ version: "11.6.0",
9294
9587
  bindings: {
9295
9588
  angular: {
9296
9589
  importPath: "@uni-design-system/uni-angular",
@@ -9378,7 +9671,7 @@ initialFocus="input"
9378
9671
  summary: "Compact chip for categories, states, filters and tokens.",
9379
9672
  description: "Compact chip for categories, states, filters and tokens. Two orthogonal style axes: `variant` picks the colour role and `tone` picks the archetype (soft / solid / outline). Both live in the theme's `tag` entry, so a theme restyles every chip in the app without touching markup. Two state classes ride alongside the tone class for the same reason: `tag-selected` and `tag-interactive` let the theme paint selection and hover beside the colours they belong to, instead of an app swapping `tone` by hand on every chip. Structurally a chip is **body + trailing action as siblings**, never nested buttons: an interactive chip whose body is a `<button>` cannot contain the remove `<button>` (invalid HTML, and the inner control becomes unreachable for keyboard users). Both stay independently operable.",
9380
9673
  category: "data",
9381
- version: "11.5.0",
9674
+ version: "11.6.0",
9382
9675
  bindings: {
9383
9676
  angular: {
9384
9677
  importPath: "@uni-design-system/uni-angular",
@@ -9756,7 +10049,7 @@ initialFocus="input"
9756
10049
  summary: "A row of chips the user picks from: filters, facets, a set of labels.",
9757
10050
  description: "A row of chips the user picks from: filters, facets, a set of labels. The group **renders its own chips** from `items` rather than projecting them. That is what lets it own the things an app was otherwise wiring per chip \u2014 which one is selected, which one holds the tab stop \u2014 since a parent cannot write a projected child's inputs. `uni-tag` is unchanged by this component; `controlTabIndex` was already its hook for a composite that manages focus. Keyboard model is the toolbar pattern: one tab stop for the whole group, and the arrow keys move within it. Twelve filter chips should cost one Tab to pass, not twelve.",
9758
10051
  category: "data",
9759
- version: "11.5.0",
10052
+ version: "11.6.0",
9760
10053
  bindings: {
9761
10054
  angular: {
9762
10055
  importPath: "@uni-design-system/uni-angular",
@@ -9954,7 +10247,7 @@ initialFocus="input"
9954
10247
  summary: "",
9955
10248
  description: "",
9956
10249
  category: "forms",
9957
- version: "11.5.0",
10250
+ version: "11.6.0",
9958
10251
  bindings: {
9959
10252
  angular: {
9960
10253
  importPath: "@uni-design-system/uni-angular",
@@ -10076,12 +10369,43 @@ initialFocus="input"
10076
10369
  default: "undefined, { alias: 'max' }",
10077
10370
  description: ""
10078
10371
  },
10372
+ {
10373
+ name: "unframed",
10374
+ kind: "input",
10375
+ type: "unknown",
10376
+ required: false,
10377
+ default: "false, { transform: booleanAttribute }",
10378
+ description: "Drop the field chrome (border, fill, inset) and render the bare chip row \u2014 an email client's To line. The surrounding layout draws any hairline and focus cue; the error state is still exposed through `aria-invalid`."
10379
+ },
10380
+ {
10381
+ name: "backspaceRemoves",
10382
+ kind: "input",
10383
+ type: "boolean",
10384
+ required: false,
10385
+ default: "false",
10386
+ description: "Backspace in an empty field removes the last tag outright, as mail clients do. Off by default: the two-step (focus the chip, then remove) never deletes blind."
10387
+ },
10388
+ {
10389
+ name: "keepInvalidText",
10390
+ kind: "input",
10391
+ type: "boolean",
10392
+ required: false,
10393
+ default: "false",
10394
+ description: "Refuse a draft that fails validation instead of committing it as a flagged chip: the text stays in the field to be fixed and `rejected` fires with `reason: 'invalid'`."
10395
+ },
10396
+ {
10397
+ name: "autocomplete",
10398
+ kind: "input",
10399
+ type: "string",
10400
+ required: false,
10401
+ default: "'off'",
10402
+ description: "The text field's `autocomplete` token. The field has its own suggestion list, so browser autofill is off by default and password managers are told to skip it. Chrome can still ignore `off` on a field it takes for an email or address; pass another token if its dropdown competes with yours."
10403
+ },
10079
10404
  {
10080
10405
  name: "tagVariant",
10081
10406
  kind: "input",
10082
10407
  type: "Variant",
10083
10408
  required: false,
10084
- default: "'primary'",
10085
10409
  description: ""
10086
10410
  },
10087
10411
  {
@@ -10089,7 +10413,6 @@ initialFocus="input"
10089
10413
  kind: "input",
10090
10414
  type: "TagTone",
10091
10415
  required: false,
10092
- default: "'soft'",
10093
10416
  description: ""
10094
10417
  },
10095
10418
  {
@@ -10122,6 +10445,29 @@ initialFocus="input"
10122
10445
  default: "250",
10123
10446
  description: ""
10124
10447
  },
10448
+ {
10449
+ name: "openOnFocus",
10450
+ kind: "input",
10451
+ type: "boolean",
10452
+ required: false,
10453
+ default: "false",
10454
+ description: "Show the suggestions on focus and on click, before anything is typed."
10455
+ },
10456
+ {
10457
+ name: "autoHighlight",
10458
+ kind: "input",
10459
+ type: "boolean",
10460
+ required: false,
10461
+ default: "false",
10462
+ description: "Keep the first suggestion active while the list is open, so Enter or Tab picks it without arrowing. A draft that is already valid under the field's validator still commits as typed."
10463
+ },
10464
+ {
10465
+ name: "draftChange",
10466
+ kind: "output",
10467
+ type: "string",
10468
+ required: false,
10469
+ description: "Uncommitted text, on every change and undebounced (cf. `query`)."
10470
+ },
10125
10471
  {
10126
10472
  name: "added",
10127
10473
  kind: "output",
@@ -10268,6 +10614,62 @@ placeholder="Name or address\u2026"
10268
10614
  />
10269
10615
  <!-- args:
10270
10616
  { disabled: true, value: [{ value: 'alpha' }, { value: 'beta' }] }
10617
+ -->`
10618
+ },
10619
+ {
10620
+ title: "Grouped Suggestions",
10621
+ framework: "angular",
10622
+ code: `<!-- Storybook story: Grouped Suggestions -->
10623
+ <uni-tag-input
10624
+ label="To"
10625
+ preset="email"
10626
+ placeholder="Name or address\u2026"
10627
+ [openOnFocus]="true"
10628
+ [suggestions]="suggestions"
10629
+ />
10630
+ <!-- args:
10631
+ {
10632
+ unframed: true,
10633
+ preset: 'email',
10634
+ value: [{ value: 'alice@uni.dev', label: 'Alice Chen', avatarName: 'Alice Chen' }],
10635
+ }
10636
+ -->`
10637
+ },
10638
+ {
10639
+ title: "Suggestion Template",
10640
+ framework: "angular",
10641
+ code: `<!-- Storybook story: Suggestion Template -->
10642
+ <uni-tag-input label="To" preset="email" [openOnFocus]="true" [suggestions]="suggestions">
10643
+ <ng-template uniTagSuggestion let-person let-index="index">
10644
+ {{ index + 1 }}. {{ person.label }} \u2014 {{ person.value }}
10645
+ </ng-template>
10646
+ </uni-tag-input>
10647
+ <!-- args:
10648
+ {
10649
+ unframed: true,
10650
+ preset: 'email',
10651
+ value: [{ value: 'alice@uni.dev', label: 'Alice Chen', avatarName: 'Alice Chen' }],
10652
+ }
10653
+ -->`
10654
+ },
10655
+ {
10656
+ title: "Unframed",
10657
+ framework: "angular",
10658
+ code: `<!-- Storybook story: Unframed -->
10659
+ <uni-tag-input
10660
+ label="To"
10661
+ preset="email"
10662
+ placeholder="Name or address\u2026"
10663
+ [value]="value"
10664
+ [suggestions]="suggestions"
10665
+ (query)="onQuery($event)"
10666
+ />
10667
+ <!-- args:
10668
+ {
10669
+ unframed: true,
10670
+ preset: 'email',
10671
+ value: [{ value: 'alice@uni.dev', label: 'Alice Chen', avatarName: 'Alice Chen' }],
10672
+ }
10271
10673
  -->`
10272
10674
  }
10273
10675
  ],
@@ -10277,6 +10679,7 @@ placeholder="Name or address\u2026"
10277
10679
  donts: [
10278
10680
  "Don't use it to pick from a closed list \u2014 that is `uni-multi-select-dropdown`.",
10279
10681
  "Don't filter `suggestions` inside the component; drive them from `(query)`.",
10682
+ "Don't rebuild a people picker on it \u2014 `uni-contact-input` already is one.",
10280
10683
  "Don't set `preset=\"email\"` for people's names: Space would split them."
10281
10684
  ],
10282
10685
  accessibility: [
@@ -10295,7 +10698,7 @@ placeholder="Name or address\u2026"
10295
10698
  summary: "The typography primitive, applied as an attribute to any element so semantics stay yours.",
10296
10699
  description: 'The typography primitive, applied as an attribute to any element so semantics stay yours. The attribute value is the typeface: `<h1 uni-text="display-small">`, `<span uni-text="caption">`, dynamic via `[uni-text]="role()"`. With no value, the typeface is inferred from the host element (h1 \u2192 headline-large, p \u2192 body-1-long, \u2026), falling back to `title-small`; the `typeface` input remains as an explicit override. It is a directive, so it stacks with anything else on the element \u2014 a layout attribute (`<div stack-layout uni-text="title-small">`) or a component\'s own host \u2014 rather than colliding with it.',
10297
10700
  category: "primitives",
10298
- version: "11.5.0",
10701
+ version: "11.6.0",
10299
10702
  bindings: {
10300
10703
  angular: {
10301
10704
  importPath: "@uni-design-system/uni-angular",
@@ -10405,7 +10808,7 @@ placeholder="Name or address\u2026"
10405
10808
  summary: "",
10406
10809
  description: "",
10407
10810
  category: "forms",
10408
- version: "11.5.0",
10811
+ version: "11.6.0",
10409
10812
  bindings: {
10410
10813
  angular: {
10411
10814
  importPath: "@uni-design-system/uni-angular",
@@ -10612,7 +11015,7 @@ placeholder="Name or address\u2026"
10612
11015
  summary: "",
10613
11016
  description: "",
10614
11017
  category: "primitives",
10615
- version: "11.5.0",
11018
+ version: "11.6.0",
10616
11019
  bindings: {
10617
11020
  angular: {
10618
11021
  importPath: "@uni-design-system/uni-angular",
@@ -10642,7 +11045,7 @@ placeholder="Name or address\u2026"
10642
11045
  summary: "Drop-in switcher for the themes registered via `UNI_THEMES`: a select over `ThemeService.themeOptions` that applies the choice through `selectTheme` (so it persists across reloads like any other theme selection).",
10643
11046
  description: "Drop-in switcher for the themes registered via `UNI_THEMES`: a select over `ThemeService.themeOptions` that applies the choice through `selectTheme` (so it persists across reloads like any other theme selection).",
10644
11047
  category: "components",
10645
- version: "11.5.0",
11048
+ version: "11.6.0",
10646
11049
  bindings: {
10647
11050
  angular: {
10648
11051
  importPath: "@uni-design-system/uni-angular",
@@ -10700,7 +11103,7 @@ placeholder="Name or address\u2026"
10700
11103
  summary: "Time field: a combobox over time options \u2014 the same listbox contract as uni-search-input and uni-tag-input.",
10701
11104
  description: "Time field: a combobox over time options \u2014 the same listbox contract as uni-search-input and uni-tag-input. Type `3p`, `930` or `15:00`, or pick `3:00 PM` from the list; the form always gets 24-hour `'HH:mm'` (`hour12` affects display only). The list is assistive, not exhaustive: any parseable time commits, unless `slots` pins the choices (a slot picker) \u2014 then a typed time must match one. Unreadable or unavailable text stays in the field, flagged, with a `rejected` event.",
10702
11105
  category: "forms",
10703
- version: "11.5.0",
11106
+ version: "11.6.0",
10704
11107
  bindings: {
10705
11108
  angular: {
10706
11109
  importPath: "@uni-design-system/uni-angular",
@@ -10915,7 +11318,7 @@ placeholder="Name or address\u2026"
10915
11318
  summary: "",
10916
11319
  description: "",
10917
11320
  category: "forms",
10918
- version: "11.5.0",
11321
+ version: "11.6.0",
10919
11322
  bindings: {
10920
11323
  angular: {
10921
11324
  importPath: "@uni-design-system/uni-angular",
@@ -11177,7 +11580,7 @@ placeholder="Name or address\u2026"
11177
11580
  summary: "",
11178
11581
  description: "",
11179
11582
  category: "feedback",
11180
- version: "11.5.0",
11583
+ version: "11.6.0",
11181
11584
  bindings: {
11182
11585
  angular: {
11183
11586
  importPath: "@uni-design-system/uni-angular",
@@ -11265,7 +11668,7 @@ placeholder="Name or address\u2026"
11265
11668
  summary: 'A thin sequencer over one `uni-callout`: steps spotlight their targets, a footer walks Next/Back with dots-or-fraction progress, and `advanceOn` gates a step behind an interaction with its target (auto-advancing for clicks, unlocking Next otherwise \u2014 announced through one `role="status"` region).',
11266
11669
  description: 'A thin sequencer over one `uni-callout`: steps spotlight their targets, a footer walks Next/Back with dots-or-fraction progress, and `advanceOn` gates a step behind an interaction with its target (auto-advancing for clicks, unlocking Next otherwise \u2014 announced through one `role="status"` region). Escape or the close button skips the tour and reports the step. `active` is a two-way model, so a tour is deep-linkable and inspectable; steps whose declared target cannot be resolved are skipped (with a dev warning) in the direction of travel rather than erroring.',
11267
11670
  category: "components",
11268
- version: "11.5.0",
11671
+ version: "11.6.0",
11269
11672
  bindings: {
11270
11673
  angular: {
11271
11674
  importPath: "@uni-design-system/uni-angular",
@@ -11392,7 +11795,7 @@ placeholder="Name or address\u2026"
11392
11795
  summary: "",
11393
11796
  description: "",
11394
11797
  category: "layout",
11395
- version: "11.5.0",
11798
+ version: "11.6.0",
11396
11799
  bindings: {
11397
11800
  angular: {
11398
11801
  importPath: "@uni-design-system/uni-angular",
@@ -15410,6 +15813,30 @@ placeholder="Name or address\u2026"
15410
15813
  DarkTheme: "md"
15411
15814
  }
15412
15815
  },
15816
+ {
15817
+ id: "tagInput.behavior.chipVariant",
15818
+ value: "primary",
15819
+ type: "string",
15820
+ kind: "behavioral",
15821
+ target: "component-prop",
15822
+ appliesTo: "tagInput",
15823
+ themeValues: {
15824
+ LightTheme: "primary",
15825
+ DarkTheme: "primary"
15826
+ }
15827
+ },
15828
+ {
15829
+ id: "tagInput.behavior.chipTone",
15830
+ value: "soft",
15831
+ type: "string",
15832
+ kind: "behavioral",
15833
+ target: "component-prop",
15834
+ appliesTo: "tagInput",
15835
+ themeValues: {
15836
+ LightTheme: "soft",
15837
+ DarkTheme: "soft"
15838
+ }
15839
+ },
15413
15840
  {
15414
15841
  id: "tagInput.behavior.minInputWidth",
15415
15842
  value: "12ch",
@@ -15482,6 +15909,102 @@ placeholder="Name or address\u2026"
15482
15909
  DarkTheme: 8
15483
15910
  }
15484
15911
  },
15912
+ {
15913
+ id: "tagInput.behavior.typeface",
15914
+ value: "label",
15915
+ type: "string",
15916
+ kind: "behavioral",
15917
+ target: "component-prop",
15918
+ appliesTo: "tagInput",
15919
+ themeValues: {
15920
+ LightTheme: "label",
15921
+ DarkTheme: "label"
15922
+ }
15923
+ },
15924
+ {
15925
+ id: "tagInput.behavior.headingTypeface",
15926
+ value: "caption",
15927
+ type: "string",
15928
+ kind: "behavioral",
15929
+ target: "component-prop",
15930
+ appliesTo: "tagInput",
15931
+ themeValues: {
15932
+ LightTheme: "caption",
15933
+ DarkTheme: "caption"
15934
+ }
15935
+ },
15936
+ {
15937
+ id: "tagInput.behavior.listWidth",
15938
+ value: "anchor",
15939
+ type: "string",
15940
+ kind: "behavioral",
15941
+ target: "component-prop",
15942
+ appliesTo: "tagInput",
15943
+ themeValues: {
15944
+ LightTheme: "anchor",
15945
+ DarkTheme: "anchor"
15946
+ }
15947
+ },
15948
+ {
15949
+ id: "contactInput.behavior.avatarSize",
15950
+ value: "md",
15951
+ type: "string",
15952
+ kind: "behavioral",
15953
+ target: "component-prop",
15954
+ appliesTo: "contactInput",
15955
+ themeValues: {
15956
+ LightTheme: "md",
15957
+ DarkTheme: "md"
15958
+ }
15959
+ },
15960
+ {
15961
+ id: "contactInput.behavior.avatarVariant",
15962
+ value: "primary",
15963
+ type: "string",
15964
+ kind: "behavioral",
15965
+ target: "component-prop",
15966
+ appliesTo: "contactInput",
15967
+ themeValues: {
15968
+ LightTheme: "primary",
15969
+ DarkTheme: "primary"
15970
+ }
15971
+ },
15972
+ {
15973
+ id: "contactInput.behavior.nameTypeface",
15974
+ value: "body-2-short",
15975
+ type: "string",
15976
+ kind: "behavioral",
15977
+ target: "component-prop",
15978
+ appliesTo: "contactInput",
15979
+ themeValues: {
15980
+ LightTheme: "body-2-short",
15981
+ DarkTheme: "body-2-short"
15982
+ }
15983
+ },
15984
+ {
15985
+ id: "contactInput.behavior.detailTypeface",
15986
+ value: "caption",
15987
+ type: "string",
15988
+ kind: "behavioral",
15989
+ target: "component-prop",
15990
+ appliesTo: "contactInput",
15991
+ themeValues: {
15992
+ LightTheme: "caption",
15993
+ DarkTheme: "caption"
15994
+ }
15995
+ },
15996
+ {
15997
+ id: "contactInput.behavior.rowGap",
15998
+ value: "sm",
15999
+ type: "string",
16000
+ kind: "behavioral",
16001
+ target: "component-prop",
16002
+ appliesTo: "contactInput",
16003
+ themeValues: {
16004
+ LightTheme: "sm",
16005
+ DarkTheme: "sm"
16006
+ }
16007
+ },
15485
16008
  {
15486
16009
  id: "calendar.behavior.dayBorderRadius",
15487
16010
  value: "max",
@@ -17639,12 +18162,24 @@ placeholder="Name or address\u2026"
17639
18162
  tagInput: {
17640
18163
  chipGap: "xs",
17641
18164
  chipSize: "md",
18165
+ chipVariant: "primary",
18166
+ chipTone: "soft",
17642
18167
  minInputWidth: "12ch",
17643
18168
  listColor: "primary-surface",
17644
18169
  listShadow: "menu",
17645
18170
  listBorderRadius: "xs",
17646
18171
  activeColor: "primary-container",
17647
- maxSuggestions: 8
18172
+ maxSuggestions: 8,
18173
+ typeface: "label",
18174
+ headingTypeface: "caption",
18175
+ listWidth: "anchor"
18176
+ },
18177
+ contactInput: {
18178
+ avatarSize: "md",
18179
+ avatarVariant: "primary",
18180
+ nameTypeface: "body-2-short",
18181
+ detailTypeface: "caption",
18182
+ rowGap: "sm"
17648
18183
  },
17649
18184
  calendar: {
17650
18185
  dayBorderRadius: "max",
@@ -18253,12 +18788,24 @@ placeholder="Name or address\u2026"
18253
18788
  tagInput: {
18254
18789
  chipGap: "xs",
18255
18790
  chipSize: "md",
18791
+ chipVariant: "primary",
18792
+ chipTone: "soft",
18256
18793
  minInputWidth: "12ch",
18257
18794
  listColor: "primary-surface",
18258
18795
  listShadow: "menu",
18259
18796
  listBorderRadius: "xs",
18260
18797
  activeColor: "primary-container",
18261
- maxSuggestions: 8
18798
+ maxSuggestions: 8,
18799
+ typeface: "label",
18800
+ headingTypeface: "caption",
18801
+ listWidth: "anchor"
18802
+ },
18803
+ contactInput: {
18804
+ avatarSize: "md",
18805
+ avatarVariant: "primary",
18806
+ nameTypeface: "body-2-short",
18807
+ detailTypeface: "caption",
18808
+ rowGap: "sm"
18262
18809
  },
18263
18810
  calendar: {
18264
18811
  dayBorderRadius: "max",
@@ -18457,6 +19004,18 @@ placeholder="Name or address\u2026"
18457
19004
  {
18458
19005
  package: "@uni-design-system/uni-angular",
18459
19006
  releases: [
19007
+ {
19008
+ version: "11.6.0",
19009
+ entries: [
19010
+ {
19011
+ bump: "minor",
19012
+ title: "Add `uni-contact-input`, a recipient field for picking people, and close the gaps that kept `uni-tag-input` from being an email client's To row.",
19013
+ body: "- **`uni-contact-input`** (new): chips plus a contact list that opens on focus, filters by name or address, groups under headings, and draws each row as a person (avatar, name, address, note). ArrowDown and Enter pick a match (`autoHighlight` makes Enter or Tab pick the first one without arrowing), Backspace removes the last person, and a typo stays in the field while `(rejected)` reports it. `allowCustom` controls whether typed addresses are accepted; `unframed` drops the field chrome. Themed through the new `contactInput` entry.\n- **`uni-tag-input`**: `uniTagSuggestion` row template; `group` headings and `avatarName` on suggestions; `openOnFocus`, `autoHighlight`, `backspaceRemoves`, `keepInvalidText`, `unframed` and `autocomplete` inputs; an undebounced `draftChange` output; a public `focus()`; `chipVariant` and `chipTone` theme options, so a theme sets the chip look once (`tagVariant` / `tagTone` still override per field). The default suggestion row now paints `description` (previously screen-reader only) and an avatar when one is given. The field opts out of password managers, and the first Escape that closes the list no longer reaches an enclosing dialog.\n- **Listbox popups** (`tagInput`, `combobox`, `searchInput`, `timeInput`): `typeface` and `listWidth` theme options. Defaults are unchanged (`label`, field width).\n- **`uni-combobox`, `uni-search-input`**: `openOnFocus` input.\n- **`uni-tag`**: an avatar image that fails to load now falls back to the `avatarName` initials.",
19014
+ commit: "3a41065"
19015
+ }
19016
+ ],
19017
+ dependencyBumps: []
19018
+ },
18460
19019
  {
18461
19020
  version: "11.5.0",
18462
19021
  entries: [
@@ -19403,6 +19962,18 @@ placeholder="Name or address\u2026"
19403
19962
  {
19404
19963
  package: "@uni-design-system/uni-core",
19405
19964
  releases: [
19965
+ {
19966
+ version: "11.6.0",
19967
+ entries: [
19968
+ {
19969
+ bump: "minor",
19970
+ title: "Add `uni-contact-input`, a recipient field for picking people, and close the gaps that kept `uni-tag-input` from being an email client's To row.",
19971
+ body: "- **`uni-contact-input`** (new): chips plus a contact list that opens on focus, filters by name or address, groups under headings, and draws each row as a person (avatar, name, address, note). ArrowDown and Enter pick a match (`autoHighlight` makes Enter or Tab pick the first one without arrowing), Backspace removes the last person, and a typo stays in the field while `(rejected)` reports it. `allowCustom` controls whether typed addresses are accepted; `unframed` drops the field chrome. Themed through the new `contactInput` entry.\n- **`uni-tag-input`**: `uniTagSuggestion` row template; `group` headings and `avatarName` on suggestions; `openOnFocus`, `autoHighlight`, `backspaceRemoves`, `keepInvalidText`, `unframed` and `autocomplete` inputs; an undebounced `draftChange` output; a public `focus()`; `chipVariant` and `chipTone` theme options, so a theme sets the chip look once (`tagVariant` / `tagTone` still override per field). The default suggestion row now paints `description` (previously screen-reader only) and an avatar when one is given. The field opts out of password managers, and the first Escape that closes the list no longer reaches an enclosing dialog.\n- **Listbox popups** (`tagInput`, `combobox`, `searchInput`, `timeInput`): `typeface` and `listWidth` theme options. Defaults are unchanged (`label`, field width).\n- **`uni-combobox`, `uni-search-input`**: `openOnFocus` input.\n- **`uni-tag`**: an avatar image that fails to load now falls back to the `avatarName` initials.",
19972
+ commit: "3a41065"
19973
+ }
19974
+ ],
19975
+ dependencyBumps: []
19976
+ },
19406
19977
  {
19407
19978
  version: "11.5.0",
19408
19979
  entries: [
@@ -20074,6 +20645,11 @@ placeholder="Name or address\u2026"
20074
20645
  {
20075
20646
  package: "@uni-design-system/uni-react",
20076
20647
  releases: [
20648
+ {
20649
+ version: "11.6.0",
20650
+ entries: [],
20651
+ dependencyBumps: []
20652
+ },
20077
20653
  {
20078
20654
  version: "11.5.0",
20079
20655
  entries: [],
@@ -20380,6 +20956,11 @@ placeholder="Name or address\u2026"
20380
20956
  {
20381
20957
  package: "@uni-design-system/uni-mcp",
20382
20958
  releases: [
20959
+ {
20960
+ version: "11.6.0",
20961
+ entries: [],
20962
+ dependencyBumps: []
20963
+ },
20383
20964
  {
20384
20965
  version: "11.5.0",
20385
20966
  entries: [
@@ -20644,7 +21225,7 @@ placeholder="Name or address\u2026"
20644
21225
  summary: "Returns a document-unique id for wiring ARIA relationships (aria-controls, aria-describedby, aria-labelledby, ...).",
20645
21226
  description: "Returns a document-unique id for wiring ARIA relationships (aria-controls, aria-describedby, aria-labelledby, ...).",
20646
21227
  members: [],
20647
- version: "11.5.0"
21228
+ version: "11.6.0"
20648
21229
  },
20649
21230
  {
20650
21231
  id: "focusable-selector",
@@ -20656,7 +21237,7 @@ placeholder="Name or address\u2026"
20656
21237
  summary: "Selector matching natively focusable elements.",
20657
21238
  description: "Selector matching natively focusable elements. Used to locate the interactive element inside a projected trigger so ARIA attributes land on the element that actually receives focus.",
20658
21239
  members: [],
20659
- version: "11.5.0"
21240
+ version: "11.6.0"
20660
21241
  },
20661
21242
  {
20662
21243
  id: "resolve-focus-target",
@@ -20668,7 +21249,7 @@ placeholder="Name or address\u2026"
20668
21249
  summary: "Resolves the element that should carry ARIA state for a trigger: the element itself when focusable, otherwise its first focusable descendant.",
20669
21250
  description: "Resolves the element that should carry ARIA state for a trigger: the element itself when focusable, otherwise its first focusable descendant.",
20670
21251
  members: [],
20671
- version: "11.5.0"
21252
+ version: "11.6.0"
20672
21253
  },
20673
21254
  {
20674
21255
  id: "visually-hidden",
@@ -20680,7 +21261,7 @@ placeholder="Name or address\u2026"
20680
21261
  summary: "Visually hides content while keeping it available to screen readers.",
20681
21262
  description: "Visually hides content while keeping it available to screen readers. Use for text alternatives (e.g. badge counts, icon-only affordances). `fixed`, not `absolute`, and that is load-bearing. An absolutely positioned box resolves its containing block to the nearest *positioned* ancestor \u2014 which, since the controls emitting these spans are `position: static`, is whatever positioned box happens to be above them in the consumer's layout, often several scroll containers up. The span then skips every intervening `overflow: auto` and lands in that distant ancestor's scrollable overflow, turning 1x1 of invisible text into real scrollable distance in a box that never opted into scrolling. A fixed box's containing block is the viewport, so it joins no ancestor's scrollable overflow at all. Caveat: inside a `transform`ed (or `filter`ed/`contain`ed) ancestor a fixed box re-anchors to that ancestor. Harmless here \u2014 the element is 1x1 and clipped to nothing, so where it lands never matters, only what it overflows.",
20682
21263
  members: [],
20683
- version: "11.5.0"
21264
+ version: "11.6.0"
20684
21265
  },
20685
21266
  {
20686
21267
  id: "motion-safe",
@@ -20692,7 +21273,7 @@ placeholder="Name or address\u2026"
20692
21273
  summary: "Wraps animation/transition styles so they only apply when the user has not requested reduced motion (WCAG 2.3.3).",
20693
21274
  description: "Wraps animation/transition styles so they only apply when the user has not requested reduced motion (WCAG 2.3.3).",
20694
21275
  members: [],
20695
- version: "11.5.0"
21276
+ version: "11.6.0"
20696
21277
  },
20697
21278
  {
20698
21279
  id: "announcer",
@@ -20717,7 +21298,7 @@ placeholder="Name or address\u2026"
20717
21298
  description: "Announce `text`, even when it repeats what was just announced."
20718
21299
  }
20719
21300
  ],
20720
- version: "11.5.0"
21301
+ version: "11.6.0"
20721
21302
  },
20722
21303
  {
20723
21304
  id: "create-announcer",
@@ -20729,7 +21310,7 @@ placeholder="Name or address\u2026"
20729
21310
  summary: "A polite live region's text, for the running commentary a form control owes a screen reader: commits, clears, refused entries, result counts \u2014 changes a sighted user sees but that are otherwise silent.",
20730
21311
  description: "A polite live region's text, for the running commentary a form control owes a screen reader: commits, clears, refused entries, result counts \u2014 changes a sighted user sees but that are otherwise silent. Extracted because five controls (`uni-combobox`, `uni-tag-input`, `uni-time-input`, `uni-date-input`, `uni-calendar`) carried byte-identical copies, including the repeat trick below \u2014 the kind of subtlety that is quietly dropped when the sixth control hand-rolls its own. Announcing the same text twice must still be heard: assistive tech reads a live region when its content *changes*, so setting an identical string is a no-op and the second \"No match.\" would be silent. A trailing space breaks the equality without changing a word of what is read. Successive repeats alternate between the padded and unpadded form, so nothing accumulates. Deliberately holds no DOM and no styling: the region belongs to the component's own template, where its placement and visually-hidden class are already the component's business.",
20731
21312
  members: [],
20732
- version: "11.5.0"
21313
+ version: "11.6.0"
20733
21314
  },
20734
21315
  {
20735
21316
  id: "uni-date",
@@ -20741,7 +21322,7 @@ placeholder="Name or address\u2026"
20741
21322
  summary: "A calendar date, `'YYYY-MM-DD'`.",
20742
21323
  description: "A calendar date, `'YYYY-MM-DD'`.",
20743
21324
  members: [],
20744
- version: "11.5.0"
21325
+ version: "11.6.0"
20745
21326
  },
20746
21327
  {
20747
21328
  id: "uni-time",
@@ -20753,7 +21334,7 @@ placeholder="Name or address\u2026"
20753
21334
  summary: "A wall-clock time, `'HH:mm'` (24-hour).",
20754
21335
  description: "A wall-clock time, `'HH:mm'` (24-hour). Display format is separate.",
20755
21336
  members: [],
20756
- version: "11.5.0"
21337
+ version: "11.6.0"
20757
21338
  },
20758
21339
  {
20759
21340
  id: "uni-date-time",
@@ -20765,7 +21346,7 @@ placeholder="Name or address\u2026"
20765
21346
  summary: "A combined date and time, `'YYYY-MM-DDTHH:mm'`.",
20766
21347
  description: "A combined date and time, `'YYYY-MM-DDTHH:mm'`.",
20767
21348
  members: [],
20768
- version: "11.5.0"
21349
+ version: "11.6.0"
20769
21350
  },
20770
21351
  {
20771
21352
  id: "uni-date-range",
@@ -20790,7 +21371,7 @@ placeholder="Name or address\u2026"
20790
21371
  description: ""
20791
21372
  }
20792
21373
  ],
20793
- version: "11.5.0"
21374
+ version: "11.6.0"
20794
21375
  },
20795
21376
  {
20796
21377
  id: "iso-date",
@@ -20802,7 +21383,7 @@ placeholder="Name or address\u2026"
20802
21383
  summary: "`(2026, 8, 5)` \u2192 `'2026-08-05'`.",
20803
21384
  description: "`(2026, 8, 5)` \u2192 `'2026-08-05'`. Does not validate \u2014 see `isValidDate`.",
20804
21385
  members: [],
20805
- version: "11.5.0"
21386
+ version: "11.6.0"
20806
21387
  },
20807
21388
  {
20808
21389
  id: "is-valid-date",
@@ -20814,7 +21395,7 @@ placeholder="Name or address\u2026"
20814
21395
  summary: "The ISO date when the parts form a real calendar day, else `null`.",
20815
21396
  description: "The ISO date when the parts form a real calendar day, else `null`.",
20816
21397
  members: [],
20817
- version: "11.5.0"
21398
+ version: "11.6.0"
20818
21399
  },
20819
21400
  {
20820
21401
  id: "days-in-month",
@@ -20826,7 +21407,7 @@ placeholder="Name or address\u2026"
20826
21407
  summary: "Days in a month, leap-year aware.",
20827
21408
  description: "Days in a month, leap-year aware.",
20828
21409
  members: [],
20829
- version: "11.5.0"
21410
+ version: "11.6.0"
20830
21411
  },
20831
21412
  {
20832
21413
  id: "add-days",
@@ -20838,7 +21419,7 @@ placeholder="Name or address\u2026"
20838
21419
  summary: "",
20839
21420
  description: "",
20840
21421
  members: [],
20841
- version: "11.5.0"
21422
+ version: "11.6.0"
20842
21423
  },
20843
21424
  {
20844
21425
  id: "add-months",
@@ -20850,7 +21431,7 @@ placeholder="Name or address\u2026"
20850
21431
  summary: "Same day \xB1 n months, clamping the day to the target month's length.",
20851
21432
  description: "Same day \xB1 n months, clamping the day to the target month's length.",
20852
21433
  members: [],
20853
- version: "11.5.0"
21434
+ version: "11.6.0"
20854
21435
  },
20855
21436
  {
20856
21437
  id: "day-of-week",
@@ -20862,7 +21443,7 @@ placeholder="Name or address\u2026"
20862
21443
  summary: "Day of week, 0 = Sunday \u2026 6 = Saturday.",
20863
21444
  description: "Day of week, 0 = Sunday \u2026 6 = Saturday.",
20864
21445
  members: [],
20865
- version: "11.5.0"
21446
+ version: "11.6.0"
20866
21447
  },
20867
21448
  {
20868
21449
  id: "month-of",
@@ -20874,7 +21455,7 @@ placeholder="Name or address\u2026"
20874
21455
  summary: "`'2026-08-20'` \u2192 `'2026-08'`.",
20875
21456
  description: "`'2026-08-20'` \u2192 `'2026-08'`.",
20876
21457
  members: [],
20877
- version: "11.5.0"
21458
+ version: "11.6.0"
20878
21459
  },
20879
21460
  {
20880
21461
  id: "today-iso",
@@ -20886,7 +21467,7 @@ placeholder="Name or address\u2026"
20886
21467
  summary: "Today as a local-wall-clock ISO date (the one place local time matters).",
20887
21468
  description: "Today as a local-wall-clock ISO date (the one place local time matters).",
20888
21469
  members: [],
20889
- version: "11.5.0"
21470
+ version: "11.6.0"
20890
21471
  },
20891
21472
  {
20892
21473
  id: "inclusive-day-count",
@@ -20898,7 +21479,7 @@ placeholder="Name or address\u2026"
20898
21479
  summary: "Inclusive day count of a range: `('-20', '-24')` \u2192 5.",
20899
21480
  description: "Inclusive day count of a range: `('-20', '-24')` \u2192 5.",
20900
21481
  members: [],
20901
- version: "11.5.0"
21482
+ version: "11.6.0"
20902
21483
  },
20903
21484
  {
20904
21485
  id: "uni-month-grid-cell",
@@ -20923,7 +21504,7 @@ placeholder="Name or address\u2026"
20923
21504
  description: "True for leading/trailing cells that belong to the adjacent months."
20924
21505
  }
20925
21506
  ],
20926
- version: "11.5.0"
21507
+ version: "11.6.0"
20927
21508
  },
20928
21509
  {
20929
21510
  id: "build-month-grid",
@@ -20935,7 +21516,7 @@ placeholder="Name or address\u2026"
20935
21516
  summary: "The week matrix a calendar renders: full weeks covering `'YYYY-MM'`, starting on `weekStart` (0 = Sunday).",
20936
21517
  description: "The week matrix a calendar renders: full weeks covering `'YYYY-MM'`, starting on `weekStart` (0 = Sunday). Outside cells are always present so showing or hiding them is a pure render decision.",
20937
21518
  members: [],
20938
- version: "11.5.0"
21519
+ version: "11.6.0"
20939
21520
  },
20940
21521
  {
20941
21522
  id: "format-date",
@@ -20947,7 +21528,7 @@ placeholder="Name or address\u2026"
20947
21528
  summary: "",
20948
21529
  description: "",
20949
21530
  members: [],
20950
- version: "11.5.0"
21531
+ version: "11.6.0"
20951
21532
  },
20952
21533
  {
20953
21534
  id: "format-month-heading",
@@ -20959,7 +21540,7 @@ placeholder="Name or address\u2026"
20959
21540
  summary: "`'2026-08'` \u2192 `'August 2026'` in the locale.",
20960
21541
  description: "`'2026-08'` \u2192 `'August 2026'` in the locale.",
20961
21542
  members: [],
20962
- version: "11.5.0"
21543
+ version: "11.6.0"
20963
21544
  },
20964
21545
  {
20965
21546
  id: "uni-weekday-name",
@@ -20984,7 +21565,7 @@ placeholder="Name or address\u2026"
20984
21565
  description: "Full weekday name, for the columnheader's `abbr`."
20985
21566
  }
20986
21567
  ],
20987
- version: "11.5.0"
21568
+ version: "11.6.0"
20988
21569
  },
20989
21570
  {
20990
21571
  id: "weekday-names",
@@ -20996,7 +21577,7 @@ placeholder="Name or address\u2026"
20996
21577
  summary: "Weekday header labels starting at `weekStart` (0 = Sunday).",
20997
21578
  description: "Weekday header labels starting at `weekStart` (0 = Sunday).",
20998
21579
  members: [],
20999
- version: "11.5.0"
21580
+ version: "11.6.0"
21000
21581
  },
21001
21582
  {
21002
21583
  id: "format-time",
@@ -21008,7 +21589,7 @@ placeholder="Name or address\u2026"
21008
21589
  summary: "`'15:00'` \u2192 `'3:00 PM'` (or `'15:00'` when `hour12` is false).",
21009
21590
  description: "`'15:00'` \u2192 `'3:00 PM'` (or `'15:00'` when `hour12` is false).",
21010
21591
  members: [],
21011
- version: "11.5.0"
21592
+ version: "11.6.0"
21012
21593
  },
21013
21594
  {
21014
21595
  id: "locale-week-start",
@@ -21020,7 +21601,7 @@ placeholder="Name or address\u2026"
21020
21601
  summary: "The locale's first day of week, 0 = Sunday \u2026 6 = Saturday.",
21021
21602
  description: "The locale's first day of week, 0 = Sunday \u2026 6 = Saturday. Falls back to Sunday where `Intl.Locale` week info is unavailable.",
21022
21603
  members: [],
21023
- version: "11.5.0"
21604
+ version: "11.6.0"
21024
21605
  },
21025
21606
  {
21026
21607
  id: "locale-default-hour12",
@@ -21032,7 +21613,7 @@ placeholder="Name or address\u2026"
21032
21613
  summary: "Whether the locale's default clock is 12-hour.",
21033
21614
  description: "Whether the locale's default clock is 12-hour.",
21034
21615
  members: [],
21035
- version: "11.5.0"
21616
+ version: "11.6.0"
21036
21617
  },
21037
21618
  {
21038
21619
  id: "locale-field-order",
@@ -21044,7 +21625,7 @@ placeholder="Name or address\u2026"
21044
21625
  summary: "The locale's numeric-date field order, e.g.",
21045
21626
  description: "The locale's numeric-date field order, e.g. en-US \u2192 month, day, year.",
21046
21627
  members: [],
21047
- version: "11.5.0"
21628
+ version: "11.6.0"
21048
21629
  },
21049
21630
  {
21050
21631
  id: "locale-month-names",
@@ -21056,7 +21637,7 @@ placeholder="Name or address\u2026"
21056
21637
  summary: "Long + short month names \u2192 month number, lowercased, dots stripped.",
21057
21638
  description: "Long + short month names \u2192 month number, lowercased, dots stripped.",
21058
21639
  members: [],
21059
- version: "11.5.0"
21640
+ version: "11.6.0"
21060
21641
  },
21061
21642
  {
21062
21643
  id: "locale-date-placeholder",
@@ -21068,7 +21649,7 @@ placeholder="Name or address\u2026"
21068
21649
  summary: "The locale's digit pattern as a placeholder, e.g.",
21069
21650
  description: "The locale's digit pattern as a placeholder, e.g. `'MM/DD/YYYY'`.",
21070
21651
  members: [],
21071
- version: "11.5.0"
21652
+ version: "11.6.0"
21072
21653
  },
21073
21654
  {
21074
21655
  id: "parse-date-text",
@@ -21080,7 +21661,7 @@ placeholder="Name or address\u2026"
21080
21661
  summary: "Free-typed date text \u2192 ISO date, or `null` when unreadable.",
21081
21662
  description: "Free-typed date text \u2192 ISO date, or `null` when unreadable. Accepts, in order: ISO (`2026-08-20`), a month name from the locale's own long/short lists (`aug 20`, `20 aug 2026`, `August 20th`), and locale-numeric text (`8/20/2026`, `20.8.2026`, `08-20`) with the digit order taken from `Intl.DateTimeFormat(locale).formatToParts()`. A missing year resolves to the next occurrence; two-digit years are refused rather than guessed.",
21082
21663
  members: [],
21083
- version: "11.5.0"
21664
+ version: "11.6.0"
21084
21665
  },
21085
21666
  {
21086
21667
  id: "parse-time-text",
@@ -21092,7 +21673,7 @@ placeholder="Name or address\u2026"
21092
21673
  summary: "Free-typed time text \u2192 `'HH:mm'`, or `null`.",
21093
21674
  description: "Free-typed time text \u2192 `'HH:mm'`, or `null`. Accepts `9`, `930`, `9:30`, `9.30`, `9 30`, `3p`, `3pm`, `3 PM`, `15:00`. Bare hours 1\u20137 with no meridiem lean PM when `hour12` \u2014 typing `3` into an appointment field means 15:00, not 03:00.",
21094
21675
  members: [],
21095
- version: "11.5.0"
21676
+ version: "11.6.0"
21096
21677
  },
21097
21678
  {
21098
21679
  id: "time-slots",
@@ -21104,7 +21685,7 @@ placeholder="Name or address\u2026"
21104
21685
  summary: "Every `minuteStep` time between `min` and `max` (inclusive bounds).",
21105
21686
  description: "Every `minuteStep` time between `min` and `max` (inclusive bounds).",
21106
21687
  members: [],
21107
- version: "11.5.0"
21688
+ version: "11.6.0"
21108
21689
  },
21109
21690
  {
21110
21691
  id: "split-date-time",
@@ -21116,7 +21697,7 @@ placeholder="Name or address\u2026"
21116
21697
  summary: "",
21117
21698
  description: "",
21118
21699
  members: [],
21119
- version: "11.5.0"
21700
+ version: "11.6.0"
21120
21701
  },
21121
21702
  {
21122
21703
  id: "join-date-time",
@@ -21128,7 +21709,7 @@ placeholder="Name or address\u2026"
21128
21709
  summary: "One combined value only when both parts are present.",
21129
21710
  description: "One combined value only when both parts are present.",
21130
21711
  members: [],
21131
- version: "11.5.0"
21712
+ version: "11.6.0"
21132
21713
  },
21133
21714
  {
21134
21715
  id: "uni-number-range",
@@ -21153,7 +21734,7 @@ placeholder="Name or address\u2026"
21153
21734
  description: ""
21154
21735
  }
21155
21736
  ],
21156
- version: "11.5.0"
21737
+ version: "11.6.0"
21157
21738
  },
21158
21739
  {
21159
21740
  id: "uni-rounding-mode",
@@ -21165,7 +21746,7 @@ placeholder="Name or address\u2026"
21165
21746
  summary: "How a tie is resolved when rounding to a fraction-digit count.",
21166
21747
  description: "How a tie is resolved when rounding to a fraction-digit count. `half-up` is the invoice default (ties away from zero: `1.15` \u2192 `1.2`); `half-even` is banker's rounding, which removes the upward bias across a column of figures (`1.25` \u2192 `1.2`, `1.35` \u2192 `1.4`).",
21167
21748
  members: [],
21168
- version: "11.5.0"
21749
+ version: "11.6.0"
21169
21750
  },
21170
21751
  {
21171
21752
  id: "uni-number-preset",
@@ -21177,7 +21758,7 @@ placeholder="Name or address\u2026"
21177
21758
  summary: "Format archetype.",
21178
21759
  description: "Format archetype. Supplies decimals, grouping, affix and `inputmode`.",
21179
21760
  members: [],
21180
- version: "11.5.0"
21761
+ version: "11.6.0"
21181
21762
  },
21182
21763
  {
21183
21764
  id: "uni-number-grouping",
@@ -21189,7 +21770,7 @@ placeholder="Name or address\u2026"
21189
21770
  summary: "Thousands-separator policy, mapped onto `Intl`'s `useGrouping`.",
21190
21771
  description: "Thousands-separator policy, mapped onto `Intl`'s `useGrouping`. `min2` \u2014 the default \u2014 groups only from five integer digits, so a year renders `2026` rather than `2,026` while a price still renders `10,000`.",
21191
21772
  members: [],
21192
- version: "11.5.0"
21773
+ version: "11.6.0"
21193
21774
  },
21194
21775
  {
21195
21776
  id: "uni-number-reject-reason",
@@ -21201,7 +21782,7 @@ placeholder="Name or address\u2026"
21201
21782
  summary: "Why a typed commit was refused.",
21202
21783
  description: "Why a typed commit was refused. The raw text stays in the field.",
21203
21784
  members: [],
21204
- version: "11.5.0"
21785
+ version: "11.6.0"
21205
21786
  },
21206
21787
  {
21207
21788
  id: "uni-number-step-config",
@@ -21244,7 +21825,7 @@ placeholder="Name or address\u2026"
21244
21825
  description: "Cycle past a fence instead of stopping at it \u2014 for genuinely cyclic fields only (23 \u2192 0 hours, 359 \u2192 0 degrees). Needs both `min` and `max`."
21245
21826
  }
21246
21827
  ],
21247
- version: "11.5.0"
21828
+ version: "11.6.0"
21248
21829
  },
21249
21830
  {
21250
21831
  id: "uni-number-clamp",
@@ -21269,7 +21850,7 @@ placeholder="Name or address\u2026"
21269
21850
  description: "Which fence was hit, or `null` when the value was already in range."
21270
21851
  }
21271
21852
  ],
21272
- version: "11.5.0"
21853
+ version: "11.6.0"
21273
21854
  },
21274
21855
  {
21275
21856
  id: "uni-locale-number-parts",
@@ -21312,7 +21893,7 @@ placeholder="Name or address\u2026"
21312
21893
  description: "Fraction digits `Intl` uses for the currency \u2014 JPY 0, USD 2."
21313
21894
  }
21314
21895
  ],
21315
- version: "11.5.0"
21896
+ version: "11.6.0"
21316
21897
  },
21317
21898
  {
21318
21899
  id: "uni-number-format-config",
@@ -21397,7 +21978,7 @@ placeholder="Name or address\u2026"
21397
21978
  description: "Spoken long form of an abbreviated suffix, for `aria-valuetext`."
21398
21979
  }
21399
21980
  ],
21400
- version: "11.5.0"
21981
+ version: "11.6.0"
21401
21982
  },
21402
21983
  {
21403
21984
  id: "uni-resolved-number-format",
@@ -21488,7 +22069,7 @@ placeholder="Name or address\u2026"
21488
22069
  description: ""
21489
22070
  }
21490
22071
  ],
21491
- version: "11.5.0"
22072
+ version: "11.6.0"
21492
22073
  },
21493
22074
  {
21494
22075
  id: "uni-number-parse-result",
@@ -21500,7 +22081,7 @@ placeholder="Name or address\u2026"
21500
22081
  summary: "The outcome of reading a user's text.",
21501
22082
  description: "The outcome of reading a user's text. Refused text is never swallowed: the caller keeps it in the field and flags it, so nobody loses their work to a silently emptied box.",
21502
22083
  members: [],
21503
- version: "11.5.0"
22084
+ version: "11.6.0"
21504
22085
  },
21505
22086
  {
21506
22087
  id: "is-canonical-decimal",
@@ -21512,7 +22093,7 @@ placeholder="Name or address\u2026"
21512
22093
  summary: "True when `text` is already a canonical decimal (leading/trailing space allowed).",
21513
22094
  description: "True when `text` is already a canonical decimal (leading/trailing space allowed).",
21514
22095
  members: [],
21515
- version: "11.5.0"
22096
+ version: "11.6.0"
21516
22097
  },
21517
22098
  {
21518
22099
  id: "decimal-scale",
@@ -21524,7 +22105,7 @@ placeholder="Name or address\u2026"
21524
22105
  summary: "Fraction-digit count.",
21525
22106
  description: "Fraction-digit count. `'1.250'` \u2192 3, `'12'` \u2192 0, `'5.'` \u2192 0.",
21526
22107
  members: [],
21527
- version: "11.5.0"
22108
+ version: "11.6.0"
21528
22109
  },
21529
22110
  {
21530
22111
  id: "to-scaled",
@@ -21536,7 +22117,7 @@ placeholder="Name or address\u2026"
21536
22117
  summary: "Canonical decimal \u2192 integer scaled by `10^scale`.",
21537
22118
  description: "Canonical decimal \u2192 integer scaled by `10^scale`. Fraction digits beyond `scale` are truncated, so callers that must not lose them pass a `scale` at least `decimalScale(value)`.",
21538
22119
  members: [],
21539
- version: "11.5.0"
22120
+ version: "11.6.0"
21540
22121
  },
21541
22122
  {
21542
22123
  id: "from-scaled",
@@ -21548,7 +22129,7 @@ placeholder="Name or address\u2026"
21548
22129
  summary: "Scaled integer \u2192 canonical decimal, with trailing fraction zeros trimmed.",
21549
22130
  description: "Scaled integer \u2192 canonical decimal, with trailing fraction zeros trimmed.",
21550
22131
  members: [],
21551
- version: "11.5.0"
22132
+ version: "11.6.0"
21552
22133
  },
21553
22134
  {
21554
22135
  id: "normalize-decimal",
@@ -21560,7 +22141,7 @@ placeholder="Name or address\u2026"
21560
22141
  summary: "Strip a leading `+`, leading zeros and trailing fraction zeros: `'+01.50'` \u2192 `'1.5'`.",
21561
22142
  description: "Strip a leading `+`, leading zeros and trailing fraction zeros: `'+01.50'` \u2192 `'1.5'`. Requires a canonical decimal; guard with `isCanonicalDecimal`.",
21562
22143
  members: [],
21563
- version: "11.5.0"
22144
+ version: "11.6.0"
21564
22145
  },
21565
22146
  {
21566
22147
  id: "to-decimal",
@@ -21572,7 +22153,7 @@ placeholder="Name or address\u2026"
21572
22153
  summary: "Any numeric input \u2192 canonical decimal, expanding the exponential notation `String(number)` produces outside 1e-7\u20261e21.",
21573
22154
  description: "Any numeric input \u2192 canonical decimal, expanding the exponential notation `String(number)` produces outside 1e-7\u20261e21. A `step` of `1e-7` would otherwise reach the arithmetic as the literal text `'1e-7'`. Throws on text that is not numeric at all \u2014 every caller here passes either a `number` input or text already cleared by the parser.",
21574
22155
  members: [],
21575
- version: "11.5.0"
22156
+ version: "11.6.0"
21576
22157
  },
21577
22158
  {
21578
22159
  id: "compare-decimal",
@@ -21584,7 +22165,7 @@ placeholder="Name or address\u2026"
21584
22165
  summary: "`-1` when `a < b`, `1` when `a > b`, `0` when equal.",
21585
22166
  description: "`-1` when `a < b`, `1` when `a > b`, `0` when equal. `'1.50'` equals `'1.5'`.",
21586
22167
  members: [],
21587
- version: "11.5.0"
22168
+ version: "11.6.0"
21588
22169
  },
21589
22170
  {
21590
22171
  id: "round-decimal",
@@ -21596,7 +22177,7 @@ placeholder="Name or address\u2026"
21596
22177
  summary: "Round to `fractionDigits`, breaking ties per `mode`.",
21597
22178
  description: "Round to `fractionDigits`, breaking ties per `mode`. Exact where `Number.prototype.toFixed` is not \u2014 see the file header.",
21598
22179
  members: [],
21599
- version: "11.5.0"
22180
+ version: "11.6.0"
21600
22181
  },
21601
22182
  {
21602
22183
  id: "shift-decimal",
@@ -21608,7 +22189,7 @@ placeholder="Name or address\u2026"
21608
22189
  summary: "Multiply by `10^places`, exactly.",
21609
22190
  description: "Multiply by `10^places`, exactly. Used for the percent preset's fraction \u21C4 display shift (`0.15` \u21C4 `15`) and for deriving a default large step of `step \xD7 10` without touching a float.",
21610
22191
  members: [],
21611
- version: "11.5.0"
22192
+ version: "11.6.0"
21612
22193
  },
21613
22194
  {
21614
22195
  id: "clamp-decimal",
@@ -21620,7 +22201,7 @@ placeholder="Name or address\u2026"
21620
22201
  summary: "Hold a value inside its fences, reporting which one it hit so the caller can announce it.",
21621
22202
  description: "Hold a value inside its fences, reporting which one it hit so the caller can announce it. Clamping belongs on commit, never per keystroke: a `min=10` field that clamps live can never be typed into, because the `1` becomes `10` before the `5` arrives.",
21622
22203
  members: [],
21623
- version: "11.5.0"
22204
+ version: "11.6.0"
21624
22205
  },
21625
22206
  {
21626
22207
  id: "step-decimal",
@@ -21632,7 +22213,7 @@ placeholder="Name or address\u2026"
21632
22213
  summary: "One step from `current`, in `direction` (`1` up, `-1` down).",
21633
22214
  description: "One step from `current`, in `direction` (`1` up, `-1` down). Steps land on the grid `origin + n \xB7 step`, where `origin` is `min` by default. A value that is *off* the grid snaps to the nearest grid point **in the direction of travel** rather than jumping past it: with `min=5, step=10` the grid is 5, 15, 25, and stepping up from 7 gives 15, not 17. Fences stop the value; they never wrap unless `wrap` is set and both bounds are defined. Returns `current` unchanged when `step` is zero.",
21634
22215
  members: [],
21635
- version: "11.5.0"
22216
+ version: "11.6.0"
21636
22217
  },
21637
22218
  {
21638
22219
  id: "locale-number-parts",
@@ -21644,7 +22225,7 @@ placeholder="Name or address\u2026"
21644
22225
  summary: "Locale separators plus, when a currency is given, its symbol, side and fraction digits.",
21645
22226
  description: "Locale separators plus, when a currency is given, its symbol, side and fraction digits. Memoized: constructing an `Intl.NumberFormat` is expensive and a field re-resolves this on every keystroke.",
21646
22227
  members: [],
21647
- version: "11.5.0"
22228
+ version: "11.6.0"
21648
22229
  },
21649
22230
  {
21650
22231
  id: "to-ascii-digits",
@@ -21656,7 +22237,7 @@ placeholder="Name or address\u2026"
21656
22237
  summary: "Map localized digits and Arabic separators to ASCII, so `\u0661\u0662\u0663\u0664\u066B\u0665` parses in `ar` and `\u0967\u0968\u0969\u096A.\u096B` in `hi`.",
21657
22238
  description: "Map localized digits and Arabic separators to ASCII, so `\u0661\u0662\u0663\u0664\u066B\u0665` parses in `ar` and `\u0967\u0968\u0969\u096A.\u096B` in `hi`.",
21658
22239
  members: [],
21659
- version: "11.5.0"
22240
+ version: "11.6.0"
21660
22241
  },
21661
22242
  {
21662
22243
  id: "evaluate-expression",
@@ -21668,7 +22249,7 @@ placeholder="Name or address\u2026"
21668
22249
  summary: "Evaluate `+ \u2212 \xD7 \xF7 ( )` over decimal literals \u2014 shunting-yard, roughly thirty lines, and **never `eval`**.",
21669
22250
  description: "Evaluate `+ \u2212 \xD7 \xF7 ( )` over decimal literals \u2014 shunting-yard, roughly thirty lines, and **never `eval`**. Returns a canonical decimal, or `null` when the text is not a well-formed expression. Floats are acceptable here in a way they are not elsewhere: this is a convenience path for spreadsheet muscle memory (`12*3`, `100/4+5`), and the result is settled to ten decimals before re-entering exact arithmetic. Division is the only operation that can produce a non-terminating decimal, and no exact representation would help there either.",
21670
22251
  members: [],
21671
- version: "11.5.0"
22252
+ version: "11.6.0"
21672
22253
  },
21673
22254
  {
21674
22255
  id: "resolve-number-format",
@@ -21680,7 +22261,7 @@ placeholder="Name or address\u2026"
21680
22261
  summary: "Fill in every preset, locale and currency default.",
21681
22262
  description: "Fill in every preset, locale and currency default.",
21682
22263
  members: [],
21683
- version: "11.5.0"
22264
+ version: "11.6.0"
21684
22265
  },
21685
22266
  {
21686
22267
  id: "parse-number",
@@ -21692,7 +22273,7 @@ placeholder="Name or address\u2026"
21692
22273
  summary: "Read a user's text into a canonical decimal in **model units**.",
21693
22274
  description: "Read a user's text into a canonical decimal in **model units**. Accepted, in order: canonical/ASCII (always, whatever the locale \u2014 it is what agents and APIs write), locale-grouped, affixed, localized digits, compact (`1.5k`), accounting negatives (`(1,234.56)` \u2192 `-1234.56`), and expressions when `allowExpressions` is set.",
21694
22275
  members: [],
21695
- version: "11.5.0"
22276
+ version: "11.6.0"
21696
22277
  },
21697
22278
  {
21698
22279
  id: "format-number",
@@ -21704,7 +22285,7 @@ placeholder="Name or address\u2026"
21704
22285
  summary: "Canonical decimal (model units) \u2192 the display number, without affixes.",
21705
22286
  description: "Canonical decimal (model units) \u2192 the display number, without affixes. `min2` grouping \u2014 the default \u2014 starts at five integer digits, so a year renders `2026` rather than `2,026` while a price still renders `10,000`.",
21706
22287
  members: [],
21707
- version: "11.5.0"
22288
+ version: "11.6.0"
21708
22289
  },
21709
22290
  {
21710
22291
  id: "raw-number-text",
@@ -21716,7 +22297,7 @@ placeholder="Name or address\u2026"
21716
22297
  summary: "The plain text the field shows while focused: the display number with no grouping and no affixes, so the caret never has to walk over a separator that appears and vanishes mid-word.",
21717
22298
  description: "The plain text the field shows while focused: the display number with no grouping and no affixes, so the caret never has to walk over a separator that appears and vanishes mid-word.",
21718
22299
  members: [],
21719
- version: "11.5.0"
22300
+ version: "11.6.0"
21720
22301
  },
21721
22302
  {
21722
22303
  id: "settle-number",
@@ -21728,7 +22309,7 @@ placeholder="Name or address\u2026"
21728
22309
  summary: "Round a committed value to the field's precision, in model units.",
21729
22310
  description: "Round a committed value to the field's precision, in model units.",
21730
22311
  members: [],
21731
- version: "11.5.0"
22312
+ version: "11.6.0"
21732
22313
  },
21733
22314
  {
21734
22315
  id: "speak-number",
@@ -21740,7 +22321,7 @@ placeholder="Name or address\u2026"
21740
22321
  summary: "The `aria-valuetext` string: the formatted number with its affixes spoken.",
21741
22322
  description: 'The `aria-valuetext` string: the formatted number with its affixes spoken. `aria-valuenow` alone announces "1234.56", which is the one thing about a money field that is not the point. An empty field says "Empty" per APG.',
21742
22323
  members: [],
21743
- version: "11.5.0"
22324
+ version: "11.6.0"
21744
22325
  },
21745
22326
  {
21746
22327
  id: "to-number",
@@ -21752,7 +22333,7 @@ placeholder="Name or address\u2026"
21752
22333
  summary: "Model-units canonical decimal \u2192 the bound `number`.",
21753
22334
  description: "Model-units canonical decimal \u2192 the bound `number`.",
21754
22335
  members: [],
21755
- version: "11.5.0"
22336
+ version: "11.6.0"
21756
22337
  },
21757
22338
  {
21758
22339
  id: "loses-precision",
@@ -21764,7 +22345,7 @@ placeholder="Name or address\u2026"
21764
22345
  summary: "True when a value cannot survive the trip through `number` \u2014 the reason the components also expose an exact `valueAsString` model, and the trigger for the dev-mode warning.",
21765
22346
  description: "True when a value cannot survive the trip through `number` \u2014 the reason the components also expose an exact `valueAsString` model, and the trigger for the dev-mode warning. Silent precision loss is the whole point of that second model, so it is worth saying out loud once. A `number` can only be checked for magnitude, since it has already lost whatever it was going to lose. A canonical string can be checked properly: `'9007199254740993'` comes back as `'9007199254740992'`.",
21766
22347
  members: [],
21767
- version: "11.5.0"
22348
+ version: "11.6.0"
21768
22349
  },
21769
22350
  {
21770
22351
  id: "press-repeat-timing",
@@ -21801,7 +22382,7 @@ placeholder="Name or address\u2026"
21801
22382
  description: ""
21802
22383
  }
21803
22384
  ],
21804
- version: "11.5.0"
22385
+ version: "11.6.0"
21805
22386
  },
21806
22387
  {
21807
22388
  id: "press-repeat-config",
@@ -21850,7 +22431,7 @@ placeholder="Name or address\u2026"
21850
22431
  description: ""
21851
22432
  }
21852
22433
  ],
21853
- version: "11.5.0"
22434
+ version: "11.6.0"
21854
22435
  },
21855
22436
  {
21856
22437
  id: "press-repeat",
@@ -21887,7 +22468,7 @@ placeholder="Name or address\u2026"
21887
22468
  description: "End a hold without firing `onRelease` \u2014 for `Escape` and `pointercancel`."
21888
22469
  }
21889
22470
  ],
21890
- version: "11.5.0"
22471
+ version: "11.6.0"
21891
22472
  },
21892
22473
  {
21893
22474
  id: "create-press-repeat",
@@ -21899,7 +22480,7 @@ placeholder="Name or address\u2026"
21899
22480
  summary: "",
21900
22481
  description: "",
21901
22482
  members: [],
21902
- version: "11.5.0"
22483
+ version: "11.6.0"
21903
22484
  },
21904
22485
  {
21905
22486
  id: "listbox-navigation-config",
@@ -21942,7 +22523,7 @@ placeholder="Name or address\u2026"
21942
22523
  description: "Let Home/End jump to the ends of the list. Default false. In an editable combobox those keys belong to the caret \u2014 APG reserves them for text editing, and a control that steals them makes the text un-navigable while its list is open. Opt in only where focus is *not* in a text field (uni-multi-select-dropdown, whose focus rides the option checkboxes). Nothing is lost by leaving it off: opening with ArrowUp already lands on the last option, ArrowDown on the first, and navigation wraps at both ends."
21943
22524
  }
21944
22525
  ],
21945
- version: "11.5.0"
22526
+ version: "11.6.0"
21946
22527
  },
21947
22528
  {
21948
22529
  id: "listbox-navigation",
@@ -22015,7 +22596,7 @@ placeholder="Name or address\u2026"
22015
22596
  description: "Close when focus leaves the control entirely (not on internal moves)."
22016
22597
  }
22017
22598
  ],
22018
- version: "11.5.0"
22599
+ version: "11.6.0"
22019
22600
  },
22020
22601
  {
22021
22602
  id: "create-listbox-navigation",
@@ -22027,7 +22608,7 @@ placeholder="Name or address\u2026"
22027
22608
  summary: "Factory mirroring the signal-API style used elsewhere in the CDK.",
22028
22609
  description: "Factory mirroring the signal-API style used elsewhere in the CDK.",
22029
22610
  members: [],
22030
- version: "11.5.0"
22611
+ version: "11.6.0"
22031
22612
  },
22032
22613
  {
22033
22614
  id: "placement",
@@ -22039,7 +22620,7 @@ placeholder="Name or address\u2026"
22039
22620
  summary: "Native CSS Anchor Positioning helpers (Baseline 2026).",
22040
22621
  description: "Native CSS Anchor Positioning helpers (Baseline 2026). These replace the former",
22041
22622
  members: [],
22042
- version: "11.5.0"
22623
+ version: "11.6.0"
22043
22624
  },
22044
22625
  {
22045
22626
  id: "anchor-offset",
@@ -22064,7 +22645,7 @@ placeholder="Name or address\u2026"
22064
22645
  description: "Shift along the cross axis, from the aligned edge."
22065
22646
  }
22066
22647
  ],
22067
- version: "11.5.0"
22648
+ version: "11.6.0"
22068
22649
  },
22069
22650
  {
22070
22651
  id: "new-anchor-name",
@@ -22076,7 +22657,7 @@ placeholder="Name or address\u2026"
22076
22657
  summary: "Returns a document-unique dashed-ident usable as a CSS `anchor-name`.",
22077
22658
  description: "Returns a document-unique dashed-ident usable as a CSS `anchor-name`.",
22078
22659
  members: [],
22079
- version: "11.5.0"
22660
+ version: "11.6.0"
22080
22661
  },
22081
22662
  {
22082
22663
  id: "anchor-styles",
@@ -22088,7 +22669,7 @@ placeholder="Name or address\u2026"
22088
22669
  summary: "Emotion style object anchoring a panel to `anchor` at `placement`.",
22089
22670
  description: "Emotion style object anchoring a panel to `anchor` at `placement`. Spread into the panel's `css()` styles. The trigger element must carry `anchor-name: <anchor>` (see `newAnchorName`).",
22090
22671
  members: [],
22091
- version: "11.5.0"
22672
+ version: "11.6.0"
22092
22673
  },
22093
22674
  {
22094
22675
  id: "anchor-arrow-styles",
@@ -22100,7 +22681,7 @@ placeholder="Name or address\u2026"
22100
22681
  summary: "Absolute positioning for a rotated-square arrow sitting on the panel edge that faces the anchor.",
22101
22682
  description: "Absolute positioning for a rotated-square arrow sitting on the panel edge that faces the anchor. Static per placement: if the browser flips the panel via position-try, the arrow stays on the configured side (cosmetic-only degradation, matching the flip-support caveat above). `overlap` (default 0 \u2014 cut exactly on the panel edge) extends the kept half into the panel; see for when that is ever wanted.",
22102
22683
  members: [],
22103
- version: "11.5.0"
22684
+ version: "11.6.0"
22104
22685
  },
22105
22686
  {
22106
22687
  id: "spotlight-options",
@@ -22131,7 +22712,7 @@ placeholder="Name or address\u2026"
22131
22712
  description: "Scrim paint; scheme-invariant by convention, like `::backdrop`."
22132
22713
  }
22133
22714
  ],
22134
- version: "11.5.0"
22715
+ version: "11.6.0"
22135
22716
  },
22136
22717
  {
22137
22718
  id: "spotlight-styles",
@@ -22162,7 +22743,7 @@ placeholder="Name or address\u2026"
22162
22743
  description: "Hole-sized click-blocker, shown when the target must not be interactive."
22163
22744
  }
22164
22745
  ],
22165
- version: "11.5.0"
22746
+ version: "11.6.0"
22166
22747
  },
22167
22748
  {
22168
22749
  id: "anchor-rect",
@@ -22211,7 +22792,7 @@ placeholder="Name or address\u2026"
22211
22792
  description: ""
22212
22793
  }
22213
22794
  ],
22214
- version: "11.5.0"
22795
+ version: "11.6.0"
22215
22796
  },
22216
22797
  {
22217
22798
  id: "transform-origin-for",
@@ -22223,7 +22804,7 @@ placeholder="Name or address\u2026"
22223
22804
  summary: "Transform origin for a panel's open/close scale animation, derived from where the panel **actually** rendered relative to its anchor \u2014 not from the requested placement.",
22224
22805
  description: "Transform origin for a panel's open/close scale animation, derived from where the panel **actually** rendered relative to its anchor \u2014 not from the requested placement. `position-try-fallbacks` lets the browser flip a panel at viewport edges, and a statically mapped origin then animates from the wrong corner (a `bottom-end` picker flipped above its field would still scale from `top right`). Measure after the popover is shown and apply the result as an inline style. Returns keyword pairs like `'top right'` / `'bottom center'`, or `null` when the panel has no box yet (e.g. `display: none`, or jsdom).",
22225
22806
  members: [],
22226
- version: "11.5.0"
22807
+ version: "11.6.0"
22227
22808
  },
22228
22809
  {
22229
22810
  id: "transform-origins",
@@ -22235,7 +22816,7 @@ placeholder="Name or address\u2026"
22235
22816
  summary: "Placement \u2192 `transform-origin`, so scale animations grow from the anchor.",
22236
22817
  description: "Placement \u2192 `transform-origin`, so scale animations grow from the anchor.",
22237
22818
  members: [],
22238
- version: "11.5.0"
22819
+ version: "11.6.0"
22239
22820
  },
22240
22821
  {
22241
22822
  id: "set-anchor-name",
@@ -22247,7 +22828,7 @@ placeholder="Name or address\u2026"
22247
22828
  summary: "Write a CSS `anchor-name` onto an element (detached anchors and targets).",
22248
22829
  description: "Write a CSS `anchor-name` onto an element (detached anchors and targets).",
22249
22830
  members: [],
22250
- version: "11.5.0"
22831
+ version: "11.6.0"
22251
22832
  },
22252
22833
  {
22253
22834
  id: "clear-anchor-name",
@@ -22259,7 +22840,7 @@ placeholder="Name or address\u2026"
22259
22840
  summary: "",
22260
22841
  description: "",
22261
22842
  members: [],
22262
- version: "11.5.0"
22843
+ version: "11.6.0"
22263
22844
  },
22264
22845
  {
22265
22846
  id: "resolve-element",
@@ -22271,7 +22852,7 @@ placeholder="Name or address\u2026"
22271
22852
  summary: "Resolve an element-or-id reference.",
22272
22853
  description: "Resolve an element-or-id reference. Id strings are looked up at call time \u2014 never cache the result across opens, the element may have been re-rendered. `''` and null-ish mean \"unset\" (falsy guard: an empty string is the only typeable empty for a string-typed input).",
22273
22854
  members: [],
22274
- version: "11.5.0"
22855
+ version: "11.6.0"
22275
22856
  },
22276
22857
  {
22277
22858
  id: "is-toggle-open",
@@ -22283,7 +22864,7 @@ placeholder="Name or address\u2026"
22283
22864
  summary: "True when a native `toggle` event reports the overlay opening.",
22284
22865
  description: "True when a native `toggle` event reports the overlay opening.",
22285
22866
  members: [],
22286
- version: "11.5.0"
22867
+ version: "11.6.0"
22287
22868
  },
22288
22869
  {
22289
22870
  id: "discrete-overlay-transition",
@@ -22295,7 +22876,7 @@ placeholder="Name or address\u2026"
22295
22876
  summary: "The discrete-transition block that animates an element into and out of the top layer: `transition-behavior: allow-discrete` over the `hidden` keys plus `display`/`overlay`, the shown state under `:popover-open`, and `@starting-style` so entry transitions run from the hidden state.",
22296
22877
  description: "The discrete-transition block that animates an element into and out of the top layer: `transition-behavior: allow-discrete` over the `hidden` keys plus `display`/`overlay`, the shown state under `:popover-open`, and `@starting-style` so entry transitions run from the hidden state. `display` and `overlay` must ride along or the element cannot animate into and out of the top layer at all \u2014 it would simply appear and vanish. `timingFunction` is omitted from the output when not given, leaving the CSS initial value (`ease`), so callers that never asked for one are unaffected.",
22297
22878
  members: [],
22298
- version: "11.5.0"
22879
+ version: "11.6.0"
22299
22880
  },
22300
22881
  {
22301
22882
  id: "restore-overlay-focus",
@@ -22307,7 +22888,7 @@ placeholder="Name or address\u2026"
22307
22888
  summary: "Returns focus to `target` when an overlay closes while focus was inside its panel (or was dropped on `<body>` by the top layer closing), so keyboard users are never stranded (WCAG 2.4.3).",
22308
22889
  description: "Returns focus to `target` when an overlay closes while focus was inside its panel (or was dropped on `<body>` by the top layer closing), so keyboard users are never stranded (WCAG 2.4.3). Focus resting anywhere else is left alone.",
22309
22890
  members: [],
22310
- version: "11.5.0"
22891
+ version: "11.6.0"
22311
22892
  },
22312
22893
  {
22313
22894
  id: "focusable-elements",
@@ -22319,7 +22900,7 @@ placeholder="Name or address\u2026"
22319
22900
  summary: "The focusable elements inside `root`, in DOM order.",
22320
22901
  description: "The focusable elements inside `root`, in DOM order. Filters disabled controls, and hidden ones where the environment can tell: jsdom reports `offsetParent` as null for every element, so the visibility filter applies only when the document actually lays out (some element has an offsetParent).",
22321
22902
  members: [],
22322
- version: "11.5.0"
22903
+ version: "11.6.0"
22323
22904
  },
22324
22905
  {
22325
22906
  id: "backdrop-dismiss",
@@ -22344,7 +22925,7 @@ placeholder="Name or address\u2026"
22344
22925
  description: "True only when both the press and the click landed on the dialog itself."
22345
22926
  }
22346
22927
  ],
22347
- version: "11.5.0"
22928
+ version: "11.6.0"
22348
22929
  },
22349
22930
  {
22350
22931
  id: "sort-direction",
@@ -22356,7 +22937,7 @@ placeholder="Name or address\u2026"
22356
22937
  summary: "",
22357
22938
  description: "",
22358
22939
  members: [],
22359
- version: "11.5.0"
22940
+ version: "11.6.0"
22360
22941
  },
22361
22942
  {
22362
22943
  id: "sort",
@@ -22381,7 +22962,7 @@ placeholder="Name or address\u2026"
22381
22962
  description: ""
22382
22963
  }
22383
22964
  ],
22384
- version: "11.5.0"
22965
+ version: "11.6.0"
22385
22966
  },
22386
22967
  {
22387
22968
  id: "uni-base-datasource",
@@ -22550,7 +23131,7 @@ placeholder="Name or address\u2026"
22550
23131
  description: ""
22551
23132
  }
22552
23133
  ],
22553
- version: "11.5.0"
23134
+ version: "11.6.0"
22554
23135
  },
22555
23136
  {
22556
23137
  id: "page-request",
@@ -22593,7 +23174,7 @@ placeholder="Name or address\u2026"
22593
23174
  description: ""
22594
23175
  }
22595
23176
  ],
22596
- version: "11.5.0"
23177
+ version: "11.6.0"
22597
23178
  },
22598
23179
  {
22599
23180
  id: "page-response",
@@ -22630,7 +23211,7 @@ placeholder="Name or address\u2026"
22630
23211
  description: ""
22631
23212
  }
22632
23213
  ],
22633
- version: "11.5.0"
23214
+ version: "11.6.0"
22634
23215
  },
22635
23216
  {
22636
23217
  id: "data-loader",
@@ -22642,7 +23223,7 @@ placeholder="Name or address\u2026"
22642
23223
  summary: "",
22643
23224
  description: "",
22644
23225
  members: [],
22645
- version: "11.5.0"
23226
+ version: "11.6.0"
22646
23227
  },
22647
23228
  {
22648
23229
  id: "uni-server-side-datasource",
@@ -22781,7 +23362,7 @@ placeholder="Name or address\u2026"
22781
23362
  description: ""
22782
23363
  }
22783
23364
  ],
22784
- version: "11.5.0"
23365
+ version: "11.6.0"
22785
23366
  },
22786
23367
  {
22787
23368
  id: "uni-datasource",
@@ -22793,7 +23374,7 @@ placeholder="Name or address\u2026"
22793
23374
  summary: "",
22794
23375
  description: "",
22795
23376
  members: [],
22796
- version: "11.5.0"
23377
+ version: "11.6.0"
22797
23378
  },
22798
23379
  {
22799
23380
  id: "uni-record-datasource",
@@ -22902,7 +23483,7 @@ placeholder="Name or address\u2026"
22902
23483
  description: ""
22903
23484
  }
22904
23485
  ],
22905
- version: "11.5.0"
23486
+ version: "11.6.0"
22906
23487
  },
22907
23488
  {
22908
23489
  id: "local-storage-service",
@@ -22957,7 +23538,7 @@ placeholder="Name or address\u2026"
22957
23538
  description: ""
22958
23539
  }
22959
23540
  ],
22960
- version: "11.5.0"
23541
+ version: "11.6.0"
22961
23542
  },
22962
23543
  {
22963
23544
  id: "alert",
@@ -23012,7 +23593,7 @@ placeholder="Name or address\u2026"
23012
23593
  description: ""
23013
23594
  }
23014
23595
  ],
23015
- version: "11.5.0"
23596
+ version: "11.6.0"
23016
23597
  },
23017
23598
  {
23018
23599
  id: "snackbar",
@@ -23067,7 +23648,7 @@ placeholder="Name or address\u2026"
23067
23648
  description: ""
23068
23649
  }
23069
23650
  ],
23070
- version: "11.5.0"
23651
+ version: "11.6.0"
23071
23652
  },
23072
23653
  {
23073
23654
  id: "confirmation",
@@ -23116,7 +23697,7 @@ placeholder="Name or address\u2026"
23116
23697
  description: ""
23117
23698
  }
23118
23699
  ],
23119
- version: "11.5.0"
23700
+ version: "11.6.0"
23120
23701
  },
23121
23702
  {
23122
23703
  id: "notification-service",
@@ -23183,7 +23764,7 @@ placeholder="Name or address\u2026"
23183
23764
  description: ""
23184
23765
  }
23185
23766
  ],
23186
- version: "11.5.0"
23767
+ version: "11.6.0"
23187
23768
  },
23188
23769
  {
23189
23770
  id: "option",
@@ -23220,7 +23801,7 @@ placeholder="Name or address\u2026"
23220
23801
  description: "Visible and announced, but not committable; listbox navigation skips it."
23221
23802
  }
23222
23803
  ],
23223
- version: "11.5.0"
23804
+ version: "11.6.0"
23224
23805
  },
23225
23806
  {
23226
23807
  id: "options",
@@ -23232,7 +23813,7 @@ placeholder="Name or address\u2026"
23232
23813
  summary: "",
23233
23814
  description: "",
23234
23815
  members: [],
23235
- version: "11.5.0"
23816
+ version: "11.6.0"
23236
23817
  },
23237
23818
  {
23238
23819
  id: "use-timer",
@@ -23244,7 +23825,7 @@ placeholder="Name or address\u2026"
23244
23825
  summary: "",
23245
23826
  description: "",
23246
23827
  members: [],
23247
- version: "11.5.0"
23828
+ version: "11.6.0"
23248
23829
  },
23249
23830
  {
23250
23831
  id: "acceptable-file",
@@ -23256,7 +23837,7 @@ placeholder="Name or address\u2026"
23256
23837
  summary: "",
23257
23838
  description: "",
23258
23839
  members: [],
23259
- version: "11.5.0"
23840
+ version: "11.6.0"
23260
23841
  },
23261
23842
  {
23262
23843
  id: "get-file-extension",
@@ -23268,7 +23849,7 @@ placeholder="Name or address\u2026"
23268
23849
  summary: "",
23269
23850
  description: "",
23270
23851
  members: [],
23271
- version: "11.5.0"
23852
+ version: "11.6.0"
23272
23853
  },
23273
23854
  {
23274
23855
  id: "query-permission",
@@ -23280,7 +23861,7 @@ placeholder="Name or address\u2026"
23280
23861
  summary: "The current state of a browser permission.",
23281
23862
  description: 'The current state of a browser permission. Resolves `unsupported` \u2014 never rejects \u2014 where the Permissions API is missing or does not know the name, which is the norm rather than the exception: Firefox and Safari reject `clipboard-write`, for one. Treat `unsupported` as "can\'t tell", not "no".',
23282
23863
  members: [],
23283
- version: "11.5.0"
23864
+ version: "11.6.0"
23284
23865
  },
23285
23866
  {
23286
23867
  id: "permission-service",
@@ -23305,7 +23886,7 @@ placeholder="Name or address\u2026"
23305
23886
  description: ""
23306
23887
  }
23307
23888
  ],
23308
- version: "11.5.0"
23889
+ version: "11.6.0"
23309
23890
  },
23310
23891
  {
23311
23892
  id: "permission",
@@ -23317,7 +23898,7 @@ placeholder="Name or address\u2026"
23317
23898
  summary: "",
23318
23899
  description: "",
23319
23900
  members: [],
23320
- version: "11.5.0"
23901
+ version: "11.6.0"
23321
23902
  },
23322
23903
  {
23323
23904
  id: "permission-state",
@@ -23329,7 +23910,7 @@ placeholder="Name or address\u2026"
23329
23910
  summary: "",
23330
23911
  description: "",
23331
23912
  members: [],
23332
- version: "11.5.0"
23913
+ version: "11.6.0"
23333
23914
  },
23334
23915
  {
23335
23916
  id: "clipboard-copy-result",
@@ -23341,7 +23922,7 @@ placeholder="Name or address\u2026"
23341
23922
  summary: "How a copy ended: - `copied` \u2014 the content is on the clipboard.",
23342
23923
  description: "How a copy ended: - `copied` \u2014 the content is on the clipboard. - `denied` \u2014 the user or a policy has blocked clipboard access for this site; only a change in the browser's site settings will fix it. - `unsupported` \u2014 no Clipboard API here (an insecure context, a server render, an old browser) or the browser cannot write one of the types. - `failed` \u2014 the browser refused this attempt for another reason, most often a call made outside a user gesture or from an unfocused document.",
23343
23924
  members: [],
23344
- version: "11.5.0"
23925
+ version: "11.6.0"
23345
23926
  },
23346
23927
  {
23347
23928
  id: "clipboard-data",
@@ -23353,7 +23934,7 @@ placeholder="Name or address\u2026"
23353
23934
  summary: "One clipboard representation; a promise lets the data arrive after the gesture.",
23354
23935
  description: "One clipboard representation; a promise lets the data arrive after the gesture.",
23355
23936
  members: [],
23356
- version: "11.5.0"
23937
+ version: "11.6.0"
23357
23938
  },
23358
23939
  {
23359
23940
  id: "clipboard-content",
@@ -23365,7 +23946,7 @@ placeholder="Name or address\u2026"
23365
23946
  summary: "What to copy: a plain string, or one item in several representations keyed by MIME type \u2014 `{ 'text/plain': \u2026, 'text/html': \u2026 }`, `{ 'image/png': blob }`.",
23366
23947
  description: "What to copy: a plain string, or one item in several representations keyed by MIME type \u2014 `{ 'text/plain': \u2026, 'text/html': \u2026 }`, `{ 'image/png': blob }`.",
23367
23948
  members: [],
23368
- version: "11.5.0"
23949
+ version: "11.6.0"
23369
23950
  },
23370
23951
  {
23371
23952
  id: "copy-to-clipboard",
@@ -23377,7 +23958,7 @@ placeholder="Name or address\u2026"
23377
23958
  summary: "Copies text or rich content with the Async Clipboard API.",
23378
23959
  description: "Copies text or rich content with the Async Clipboard API. Never rejects: the result says what happened, so a caller can tell the user why. Call it directly from the click or key handler. The write starts synchronously, before anything is awaited, because browsers only honor it inside the user gesture \u2014 which is also why the `clipboard-write` permission is consulted after a refusal, to explain it, rather than before the attempt. For content that has to be fetched or rendered first, pass a promise as the value instead of awaiting it yourself.",
23379
23960
  members: [],
23380
- version: "11.5.0"
23961
+ version: "11.6.0"
23381
23962
  }
23382
23963
  ],
23383
23964
  utilityDocs: [
@@ -25088,12 +25669,24 @@ var buildComponents = (c) => ({
25088
25669
  tagInput: { options: {
25089
25670
  chipGap: "xs",
25090
25671
  chipSize: "md",
25672
+ chipVariant: "primary",
25673
+ chipTone: "soft",
25091
25674
  minInputWidth: "12ch",
25092
25675
  listColor: "primary-surface",
25093
25676
  listShadow: "menu",
25094
25677
  listBorderRadius: "xs",
25095
25678
  activeColor: "primary-container",
25096
- maxSuggestions: 8
25679
+ maxSuggestions: 8,
25680
+ typeface: "label",
25681
+ headingTypeface: "caption",
25682
+ listWidth: "anchor"
25683
+ } },
25684
+ contactInput: { options: {
25685
+ avatarSize: "md",
25686
+ avatarVariant: "primary",
25687
+ nameTypeface: "body-2-short",
25688
+ detailTypeface: "caption",
25689
+ rowGap: "sm"
25097
25690
  } },
25098
25691
  calendar: {
25099
25692
  options: {
@@ -26989,4 +27582,4 @@ export {
26989
27582
  buildStoredTheme,
26990
27583
  createUniServer
26991
27584
  };
26992
- //# sourceMappingURL=chunk-2FUM4CYC.js.map
27585
+ //# sourceMappingURL=chunk-INTB6KJ7.js.map