@uni-design-system/uni-mcp 11.9.0 → 11.10.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.9.0",
11
- builtAt: "2026-10-22T15:35:59.427Z",
10
+ version: "11.10.0",
11
+ builtAt: "2026-10-22T16:40:50.352Z",
12
12
  frameworks: [
13
13
  "angular"
14
14
  ],
15
15
  counts: {
16
- components: 89,
17
- tokens: 514,
16
+ components: 90,
17
+ tokens: 518,
18
18
  themes: 2,
19
- examples: 263,
19
+ examples: 265,
20
20
  utilities: 124
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.9.0",
31
+ version: "11.10.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.9.0",
121
+ version: "11.10.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.9.0",
194
+ version: "11.10.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.9.0",
289
+ version: "11.10.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.9.0",
338
+ version: "11.10.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.9.0",
419
+ version: "11.10.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.9.0",
516
+ version: "11.10.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.9.0",
540
+ version: "11.10.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.9.0",
948
+ version: "11.10.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.9.0",
1033
+ version: "11.10.0",
1034
1034
  bindings: {
1035
1035
  angular: {
1036
1036
  importPath: "@uni-design-system/uni-angular",
@@ -1198,7 +1198,7 @@ var uni_index_default = {
1198
1198
  summary: "",
1199
1199
  description: "",
1200
1200
  category: "primitives",
1201
- version: "11.9.0",
1201
+ version: "11.10.0",
1202
1202
  bindings: {
1203
1203
  angular: {
1204
1204
  importPath: "@uni-design-system/uni-angular",
@@ -1230,7 +1230,7 @@ var uni_index_default = {
1230
1230
  summary: "Inline month calendar: single-date or start\u2013end range selection, day markers (availability dots), min/max fences and disabled dates.",
1231
1231
  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.",
1232
1232
  category: "forms",
1233
- version: "11.9.0",
1233
+ version: "11.10.0",
1234
1234
  bindings: {
1235
1235
  angular: {
1236
1236
  importPath: "@uni-design-system/uni-angular",
@@ -1471,7 +1471,7 @@ var uni_index_default = {
1471
1471
  summary: "Anchored coach-mark panel that dims the page and cuts a spotlight hole around its target.",
1472
1472
  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).',
1473
1473
  category: "components",
1474
- version: "11.9.0",
1474
+ version: "11.10.0",
1475
1475
  bindings: {
1476
1476
  angular: {
1477
1477
  importPath: "@uni-design-system/uni-angular",
@@ -1688,15 +1688,53 @@ var uni_index_default = {
1688
1688
  id: "card",
1689
1689
  name: "Card",
1690
1690
  status: "stable",
1691
- summary: "",
1692
- description: "",
1691
+ summary: "Content container with a themed frame \u2014 and, when asked, a state.",
1692
+ description: "Content container with a themed frame \u2014 and, when asked, a state. `selected` and `interactive` add the `card-selected` and `card-interactive` classes to the frame, which the theme paints (the same contract `uni-tag` has had since 11.1): `selectedBorder`, `selectedColor`, `selectedElevation` and `hoverColor` cover the common case, and a variant's `&.card-selected` rule reaches it for anything else. Inside a `uni-card-group`, a card with a `value` is one of the group's options: a `role=\"radio\"` whose selection and tab stop the group drives. The frame is an Emotion class, not an inline style, because an inline style outranks every class and so no theme rule could ever express a state.",
1693
1693
  category: "layout",
1694
- version: "11.9.0",
1694
+ version: "11.10.0",
1695
1695
  bindings: {
1696
1696
  angular: {
1697
1697
  importPath: "@uni-design-system/uni-angular",
1698
1698
  selectorOrTag: "uni-card",
1699
1699
  api: [
1700
+ {
1701
+ name: "selected",
1702
+ kind: "input",
1703
+ type: "boolean | undefined",
1704
+ required: false,
1705
+ default: "undefined",
1706
+ description: "Paint the selected state. Inside a group it is derived from the group's value and this input is ignored."
1707
+ },
1708
+ {
1709
+ name: "interactive",
1710
+ kind: "input",
1711
+ type: "unknown",
1712
+ required: false,
1713
+ default: "false, { transform: booleanAttribute }",
1714
+ description: "A card the user acts on: a pointer cursor, the theme's hover wash, and `activated` on click, Space or Enter. Always on for an option in a group."
1715
+ },
1716
+ {
1717
+ name: "value",
1718
+ kind: "input",
1719
+ type: "T",
1720
+ required: false,
1721
+ description: "What this card stands for inside a `uni-card-group`."
1722
+ },
1723
+ {
1724
+ name: "disabled",
1725
+ kind: "input",
1726
+ type: "unknown",
1727
+ required: false,
1728
+ default: "false, { transform: booleanAttribute }",
1729
+ description: ""
1730
+ },
1731
+ {
1732
+ name: "activated",
1733
+ kind: "output",
1734
+ type: "void",
1735
+ required: false,
1736
+ description: "An interactive card was clicked or activated from the keyboard."
1737
+ },
1700
1738
  {
1701
1739
  name: "variant",
1702
1740
  kind: "input",
@@ -1734,16 +1772,46 @@ var uni_index_default = {
1734
1772
  ngContent: 'Card content.',
1735
1773
  }
1736
1774
  -->`
1775
+ },
1776
+ {
1777
+ title: "States",
1778
+ framework: "angular",
1779
+ code: '<!-- Storybook story: States -->\n<div stack-layout gap="md" [maxWidth]="320">\n<uni-card [interactive]="true" [selected]="picked" (activated)="picked = !picked">\n <uni-card-content>\n <span uni-text="title-small" display="block">Click to pick</span>\n <span uni-text="body-2-long">Selected: {{ picked }}</span>\n </uni-card-content>\n</uni-card>\n<uni-card [selected]="true">\n <uni-card-content><span uni-text="title-small">Always selected</span></uni-card-content>\n</uni-card>\n</div>'
1780
+ },
1781
+ {
1782
+ title: "Pick One",
1783
+ framework: "angular",
1784
+ code: `<!-- Storybook story: Pick One -->
1785
+ <h3 id="kind-heading" uni-text="title-small">Kind of work</h3>
1786
+ <uni-card-group ariaLabelledBy="kind-heading" [(value)]="kind">
1787
+ @for (option of kinds; track option.value) {
1788
+ <uni-card [value]="option.value" [disabled]="option.disabled ?? false">
1789
+ <div box-layout padding="md">
1790
+ <span uni-text="title-small" display="block">{{ option.title }}</span>
1791
+ <span uni-text="body-2-long" color="on-surface-variant">{{ option.blurb }}</span>
1792
+ </div>
1793
+ </uni-card>
1794
+ }
1795
+ </uni-card-group>
1796
+ <p uni-text="body-2">Value: {{ kind ?? 'none' }}</p>`
1737
1797
  }
1738
1798
  ],
1739
1799
  guidelines: {
1740
1800
  whenToUse: "Content container with a themed frame: the border resolves from the **border\nprimitive named by its variant** (`borders.primary` \u2026 `borders.success`), the corner\nradius from the `card` theme options, and an optional elevation shadow. Compose with\nCard Header and Card Content for the standard anatomy \u2014 or point `options.border` at\na custom primitive to restyle every card in the theme at once.",
1741
1801
  dos: [],
1742
1802
  donts: [],
1743
- accessibility: []
1803
+ accessibility: [
1804
+ "A plain card is content: no role, no tab stop.",
1805
+ 'An option in a group is `role="radio"` with `aria-checked`; the group is `role="radiogroup"`, named by `ariaLabel` or `ariaLabelledBy`, with `aria-required` and an `aria-invalid` gated on touched or dirty.',
1806
+ "One tab stop for the group; the arrow keys both move and select (the APG radio group), so a selection is never a two-step.",
1807
+ "A disabled card is `aria-disabled`, skipped by the arrows and never selected.",
1808
+ "The group is touched once focus leaves it, not while it moves within."
1809
+ ]
1744
1810
  },
1745
1811
  relatedTokens: [
1746
- "card.behavior.borderRadius"
1812
+ "card.behavior.borderRadius",
1813
+ "card.behavior.selectedBorder",
1814
+ "card.behavior.selectedColor"
1747
1815
  ]
1748
1816
  },
1749
1817
  {
@@ -1753,7 +1821,7 @@ var uni_index_default = {
1753
1821
  summary: "",
1754
1822
  description: "",
1755
1823
  category: "layout",
1756
- version: "11.9.0",
1824
+ version: "11.10.0",
1757
1825
  bindings: {
1758
1826
  angular: {
1759
1827
  importPath: "@uni-design-system/uni-angular",
@@ -1787,6 +1855,144 @@ var uni_index_default = {
1787
1855
  },
1788
1856
  relatedTokens: []
1789
1857
  },
1858
+ {
1859
+ id: "card-group",
1860
+ name: "CardGroup",
1861
+ status: "stable",
1862
+ summary: "Pick-one group of cards: a grid of `uni-card`s with radio semantics.",
1863
+ description: "Pick-one group of cards: a grid of `uni-card`s with radio semantics. The cards are projected, not rendered: a card's content is the point of a card, and a group that rendered its own would need a slot for every line. Each projected `uni-card` with a `value` registers as an option; the group owns which one is selected and which one holds the tab stop, and the card draws both. Keyboard model is the APG radio group: one tab stop for the group, the arrow keys move focus *and* select (wrapping at the ends), Home and End go to the first and last enabled card, Space or Enter selects the focused one. `FormValueControl<T | null>`, so `[formField]` binds it like every other control; `touched` is set when focus leaves the group.",
1864
+ category: "layout",
1865
+ version: "11.10.0",
1866
+ bindings: {
1867
+ angular: {
1868
+ importPath: "@uni-design-system/uni-angular",
1869
+ selectorOrTag: "uni-card-group",
1870
+ api: [
1871
+ {
1872
+ name: "value",
1873
+ kind: "model",
1874
+ type: "T | null",
1875
+ required: false,
1876
+ default: "null",
1877
+ description: ""
1878
+ },
1879
+ {
1880
+ name: "disabled",
1881
+ kind: "input",
1882
+ type: "boolean",
1883
+ required: false,
1884
+ default: "false",
1885
+ description: ""
1886
+ },
1887
+ {
1888
+ name: "touched",
1889
+ kind: "model",
1890
+ type: "boolean",
1891
+ required: false,
1892
+ default: "false",
1893
+ description: ""
1894
+ },
1895
+ {
1896
+ name: "touch",
1897
+ kind: "output",
1898
+ type: "void",
1899
+ required: false,
1900
+ description: "Angular 22 marks the bound field touched through this output."
1901
+ },
1902
+ {
1903
+ name: "invalid",
1904
+ kind: "input",
1905
+ type: "boolean",
1906
+ required: false,
1907
+ default: "false",
1908
+ description: ""
1909
+ },
1910
+ {
1911
+ name: "dirty",
1912
+ kind: "input",
1913
+ type: "boolean",
1914
+ required: false,
1915
+ default: "false",
1916
+ description: ""
1917
+ },
1918
+ {
1919
+ name: "required",
1920
+ kind: "input",
1921
+ type: "boolean",
1922
+ required: false,
1923
+ default: "false",
1924
+ description: ""
1925
+ },
1926
+ {
1927
+ name: "ariaDescribedBy",
1928
+ kind: "input",
1929
+ type: "string",
1930
+ required: false,
1931
+ description: ""
1932
+ },
1933
+ {
1934
+ name: "ariaLabel",
1935
+ kind: "input",
1936
+ type: "string",
1937
+ required: false,
1938
+ description: 'Accessible name of the group, e.g. "Kind of work".'
1939
+ },
1940
+ {
1941
+ name: "ariaLabelledBy",
1942
+ kind: "input",
1943
+ type: "string",
1944
+ required: false,
1945
+ description: "Id of the element naming the group, when a visible heading does."
1946
+ },
1947
+ {
1948
+ name: "templateColumns",
1949
+ kind: "input",
1950
+ type: "string",
1951
+ required: false,
1952
+ description: "`grid-template-columns`, overriding the theme option per instance."
1953
+ },
1954
+ {
1955
+ name: "gap",
1956
+ kind: "input",
1957
+ type: "NullableSize",
1958
+ required: false,
1959
+ description: "Space between cards, overriding the theme option per instance."
1960
+ },
1961
+ {
1962
+ name: "activated",
1963
+ kind: "output",
1964
+ type: "T",
1965
+ required: false,
1966
+ description: "The card the user just picked."
1967
+ },
1968
+ {
1969
+ name: "variant",
1970
+ kind: "input",
1971
+ type: "Variant",
1972
+ required: false,
1973
+ default: "'primary'",
1974
+ description: "Style archetype from the theme. Inherited from BaseComponent."
1975
+ },
1976
+ {
1977
+ name: "size",
1978
+ kind: "input",
1979
+ type: "Size",
1980
+ required: false,
1981
+ default: "'lg'",
1982
+ description: "Size token from the theme. Inherited from BaseComponent. Only has an effect where the component theme defines a `sizes` block."
1983
+ }
1984
+ ]
1985
+ }
1986
+ },
1987
+ examples: [],
1988
+ guidelines: {
1989
+ whenToUse: "",
1990
+ dos: [],
1991
+ donts: [],
1992
+ accessibility: []
1993
+ },
1994
+ relatedTokens: []
1995
+ },
1790
1996
  {
1791
1997
  id: "card-header",
1792
1998
  name: "CardHeader",
@@ -1794,7 +2000,7 @@ var uni_index_default = {
1794
2000
  summary: "",
1795
2001
  description: "",
1796
2002
  category: "layout",
1797
- version: "11.9.0",
2003
+ version: "11.10.0",
1798
2004
  bindings: {
1799
2005
  angular: {
1800
2006
  importPath: "@uni-design-system/uni-angular",
@@ -1851,7 +2057,7 @@ var uni_index_default = {
1851
2057
  summary: "",
1852
2058
  description: "",
1853
2059
  category: "layout",
1854
- version: "11.9.0",
2060
+ version: "11.10.0",
1855
2061
  bindings: {
1856
2062
  angular: {
1857
2063
  importPath: "@uni-design-system/uni-angular",
@@ -1906,7 +2112,7 @@ var uni_index_default = {
1906
2112
  summary: "",
1907
2113
  description: "",
1908
2114
  category: "forms",
1909
- version: "11.9.0",
2115
+ version: "11.10.0",
1910
2116
  bindings: {
1911
2117
  angular: {
1912
2118
  importPath: "@uni-design-system/uni-angular",
@@ -2128,7 +2334,7 @@ var uni_index_default = {
2128
2334
  summary: "Form-bound, closed-set, single-select autocomplete: `FormValueControl<T | null>` over object `Options<T>`, type-to-filter, commit-on-select.",
2129
2335
  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.",
2130
2336
  category: "forms",
2131
- version: "11.9.0",
2337
+ version: "11.10.0",
2132
2338
  bindings: {
2133
2339
  angular: {
2134
2340
  importPath: "@uni-design-system/uni-angular",
@@ -2430,7 +2636,7 @@ emptyText="No countries found"
2430
2636
  summary: "",
2431
2637
  description: "",
2432
2638
  category: "feedback",
2433
- version: "11.9.0",
2639
+ version: "11.10.0",
2434
2640
  bindings: {
2435
2641
  angular: {
2436
2642
  importPath: "@uni-design-system/uni-angular",
@@ -2477,7 +2683,7 @@ emptyText="No countries found"
2477
2683
  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).",
2478
2684
  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.",
2479
2685
  category: "forms",
2480
- version: "11.9.0",
2686
+ version: "11.10.0",
2481
2687
  bindings: {
2482
2688
  angular: {
2483
2689
  importPath: "@uni-design-system/uni-angular",
@@ -2762,7 +2968,7 @@ emptyText="No countries found"
2762
2968
  summary: "",
2763
2969
  description: "",
2764
2970
  category: "forms",
2765
- version: "11.9.0",
2971
+ version: "11.10.0",
2766
2972
  bindings: {
2767
2973
  angular: {
2768
2974
  importPath: "@uni-design-system/uni-angular",
@@ -2861,7 +3067,7 @@ emptyText="No countries found"
2861
3067
  summary: "Data grid over a `UniDatasource`: sortable headers, a leading selection column, and an expandable detail row per record.",
2862
3068
  description: "Data grid over a `UniDatasource`: sortable headers, a leading selection column, and an expandable detail row per record. Rows are addressed by the datasource's `rowId` where it has one \u2014 so a selection survives a re-fetch that rebuilds the records, and the expanded row follows its record through a sort \u2014 and by reference (selection) or page index (expansion) where it has none.",
2863
3069
  category: "data",
2864
- version: "11.9.0",
3070
+ version: "11.10.0",
2865
3071
  bindings: {
2866
3072
  angular: {
2867
3073
  importPath: "@uni-design-system/uni-angular",
@@ -3180,7 +3386,7 @@ emptyText="No countries found"
3180
3386
  summary: "Date field with free-typed parsing and a popup calendar.",
3181
3387
  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.",
3182
3388
  category: "forms",
3183
- version: "11.9.0",
3389
+ version: "11.10.0",
3184
3390
  bindings: {
3185
3391
  angular: {
3186
3392
  importPath: "@uni-design-system/uni-angular",
@@ -3411,7 +3617,7 @@ emptyText="No countries found"
3411
3617
  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.",
3412
3618
  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.",
3413
3619
  category: "forms",
3414
- version: "11.9.0",
3620
+ version: "11.10.0",
3415
3621
  bindings: {
3416
3622
  angular: {
3417
3623
  importPath: "@uni-design-system/uni-angular",
@@ -3604,7 +3810,7 @@ emptyText="No countries found"
3604
3810
  summary: "Text input that emits `change` only after the user pauses typing.",
3605
3811
  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.",
3606
3812
  category: "forms",
3607
- version: "11.9.0",
3813
+ version: "11.10.0",
3608
3814
  bindings: {
3609
3815
  angular: {
3610
3816
  importPath: "@uni-design-system/uni-angular",
@@ -3752,7 +3958,7 @@ emptyText="No countries found"
3752
3958
  summary: "Modal dialog on the native `<dialog>` element, laid out as three rows: an optional `[dialog-header]`, the projected body, an optional `[dialog-buttons]`.",
3753
3959
  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.",
3754
3960
  category: "feedback",
3755
- version: "11.9.0",
3961
+ version: "11.10.0",
3756
3962
  bindings: {
3757
3963
  angular: {
3758
3964
  importPath: "@uni-design-system/uni-angular",
@@ -3922,7 +4128,7 @@ uni-dialog
3922
4128
  summary: "The dialog's pinned footer action row.",
3923
4129
  description: "The dialog's pinned footer action row. Empty, it renders a Confirm/Cancel pair wired to the dialog. Project your own buttons and they replace the pair while keeping the row's chrome \u2014 padding, gap, justification, divider, `stretch` and `reverseOrder`. A `[dialog-footnote]` projects on the leading edge, pushing the actions to the trailing one.",
3924
4130
  category: "feedback",
3925
- version: "11.9.0",
4131
+ version: "11.10.0",
3926
4132
  bindings: {
3927
4133
  angular: {
3928
4134
  importPath: "@uni-design-system/uni-angular",
@@ -4040,9 +4246,9 @@ uni-dialog
4040
4246
  name: "DialogHeader",
4041
4247
  status: "stable",
4042
4248
  summary: "The dialog's pinned header row, in one of two shapes: - **Title bar** (default): one line of text, set in the theme's `textRole` and aligned by `textAlign`, beside a close button.",
4043
- description: "The dialog's pinned header row, in one of two shapes: - **Title bar** (default): one line of text, set in the theme's `textRole` and aligned by `textAlign`, beside a close button. - **Rich** (`rich`): the projection is rendered as a block \u2014 an eyebrow, a headline, a blurb \u2014 beside the close button, in its own `richColor` and `richPadding`. Mark the headline `[dialog-title]` so it alone names the dialog.",
4249
+ description: "The dialog's pinned header row, in one of two shapes: - **Title bar** (default): one line of text, set in the theme's `textRole` and aligned by `textAlign`, beside a close button. - **Rich** (`rich`): the projection is rendered as a block \u2014 an eyebrow, a headline, a blurb \u2014 beside the close button, in its own `richColor` and `richPadding`. Mark the headline `[dialog-title]` so it alone names the dialog. The close button follows the dialog's `defaultCloseButton`: a sheet that closes from its footer says `[defaultCloseButton]=\"false\"` once and gets no X here either.",
4044
4250
  category: "feedback",
4045
- version: "11.9.0",
4251
+ version: "11.10.0",
4046
4252
  bindings: {
4047
4253
  angular: {
4048
4254
  importPath: "@uni-design-system/uni-angular",
@@ -4089,9 +4295,9 @@ uni-dialog
4089
4295
  name: "DialogTitle",
4090
4296
  status: "stable",
4091
4297
  summary: "Marks the element that names the dialog inside a rich `[dialog-header]`.",
4092
- description: "Marks the element that names the dialog inside a rich `[dialog-header]`. A rich head projects an eyebrow, a headline and a blurb; the dialog should be labelled by the headline alone, not read all three as its name. Put this on the headline and it carries the id the dialog's `aria-labelledby` points at. Without one, the whole projected block is the label.",
4298
+ description: "Marks the element that names the dialog inside a rich `[dialog-header]`. A rich head projects an eyebrow, a headline and a blurb; the dialog should be labelled by the headline alone, not read all three as its name. Put this on the headline and the dialog's `aria-labelledby` points at it \u2014 through the id it already has, or the dialog's title id when it has none. Projected through a wrapper component the directive cannot reach the dialog; the header then finds the marked element in the DOM instead.",
4093
4299
  category: "feedback",
4094
- version: "11.9.0",
4300
+ version: "11.10.0",
4095
4301
  bindings: {
4096
4302
  angular: {
4097
4303
  importPath: "@uni-design-system/uni-angular",
@@ -4115,7 +4321,7 @@ uni-dialog
4115
4321
  summary: "",
4116
4322
  description: "",
4117
4323
  category: "layout",
4118
- version: "11.9.0",
4324
+ version: "11.10.0",
4119
4325
  bindings: {
4120
4326
  angular: {
4121
4327
  importPath: "@uni-design-system/uni-angular",
@@ -4171,7 +4377,7 @@ uni-dialog
4171
4377
  summary: "",
4172
4378
  description: "",
4173
4379
  category: "directives",
4174
- version: "11.9.0",
4380
+ version: "11.10.0",
4175
4381
  bindings: {
4176
4382
  angular: {
4177
4383
  importPath: "@uni-design-system/uni-angular",
@@ -4203,7 +4409,7 @@ uni-dialog
4203
4409
  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.",
4204
4410
  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. With `modal` off it is shown as a `popover="manual"` instead: still the top layer, but no focus trap, no inert page and no backdrop \u2014 a workbench beside a live document. **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.',
4205
4411
  category: "components",
4206
- version: "11.9.0",
4412
+ version: "11.10.0",
4207
4413
  bindings: {
4208
4414
  angular: {
4209
4415
  importPath: "@uni-design-system/uni-angular",
@@ -4433,7 +4639,7 @@ initialFocus="input"
4433
4639
  summary: "The drawer's pinned footer action row \u2014 the save bar of an editor panel.",
4434
4640
  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. Empty, it renders a Cancel/Save pair wired to the drawer. Project your own buttons and they replace the pair while keeping the row's chrome; a `[drawer-footnote]` projects on the leading edge.",
4435
4641
  category: "primitives",
4436
- version: "11.9.0",
4642
+ version: "11.10.0",
4437
4643
  bindings: {
4438
4644
  angular: {
4439
4645
  importPath: "@uni-design-system/uni-angular",
@@ -4538,7 +4744,7 @@ initialFocus="input"
4538
4744
  summary: "The drawer's pinned header row: a title, and optionally a close button.",
4539
4745
  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.",
4540
4746
  category: "components",
4541
- version: "11.9.0",
4747
+ version: "11.10.0",
4542
4748
  bindings: {
4543
4749
  angular: {
4544
4750
  importPath: "@uni-design-system/uni-angular",
@@ -4586,7 +4792,7 @@ initialFocus="input"
4586
4792
  summary: "",
4587
4793
  description: "",
4588
4794
  category: "components",
4589
- version: "11.9.0",
4795
+ version: "11.10.0",
4590
4796
  bindings: {
4591
4797
  angular: {
4592
4798
  importPath: "@uni-design-system/uni-angular",
@@ -4720,7 +4926,7 @@ initialFocus="input"
4720
4926
  summary: "",
4721
4927
  description: "",
4722
4928
  category: "layout",
4723
- version: "11.9.0",
4929
+ version: "11.10.0",
4724
4930
  bindings: {
4725
4931
  angular: {
4726
4932
  importPath: "@uni-design-system/uni-angular",
@@ -4827,7 +5033,7 @@ initialFocus="input"
4827
5033
  summary: "",
4828
5034
  description: "",
4829
5035
  category: "layout",
4830
- version: "11.9.0",
5036
+ version: "11.10.0",
4831
5037
  bindings: {
4832
5038
  angular: {
4833
5039
  importPath: "@uni-design-system/uni-angular",
@@ -4898,7 +5104,7 @@ initialFocus="input"
4898
5104
  summary: "Trigger for a {@link UniExpandComponent} region.",
4899
5105
  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.",
4900
5106
  category: "layout",
4901
- version: "11.9.0",
5107
+ version: "11.10.0",
4902
5108
  bindings: {
4903
5109
  angular: {
4904
5110
  importPath: "@uni-design-system/uni-angular",
@@ -4983,7 +5189,7 @@ initialFocus="input"
4983
5189
  summary: "",
4984
5190
  description: "",
4985
5191
  category: "forms",
4986
- version: "11.9.0",
5192
+ version: "11.10.0",
4987
5193
  bindings: {
4988
5194
  angular: {
4989
5195
  importPath: "@uni-design-system/uni-angular",
@@ -5141,7 +5347,7 @@ initialFocus="input"
5141
5347
  summary: "",
5142
5348
  description: "",
5143
5349
  category: "layout",
5144
- version: "11.9.0",
5350
+ version: "11.10.0",
5145
5351
  bindings: {
5146
5352
  angular: {
5147
5353
  importPath: "@uni-design-system/uni-angular",
@@ -5238,7 +5444,7 @@ initialFocus="input"
5238
5444
  summary: "",
5239
5445
  description: "",
5240
5446
  category: "layout",
5241
- version: "11.9.0",
5447
+ version: "11.10.0",
5242
5448
  bindings: {
5243
5449
  angular: {
5244
5450
  importPath: "@uni-design-system/uni-angular",
@@ -5270,7 +5476,7 @@ initialFocus="input"
5270
5476
  summary: "",
5271
5477
  description: "",
5272
5478
  category: "primitives",
5273
- version: "11.9.0",
5479
+ version: "11.10.0",
5274
5480
  bindings: {
5275
5481
  angular: {
5276
5482
  importPath: "@uni-design-system/uni-angular",
@@ -5330,7 +5536,7 @@ initialFocus="input"
5330
5536
  summary: "",
5331
5537
  description: "",
5332
5538
  category: "primitives",
5333
- version: "11.9.0",
5539
+ version: "11.10.0",
5334
5540
  bindings: {
5335
5541
  angular: {
5336
5542
  importPath: "@uni-design-system/uni-angular",
@@ -5443,7 +5649,7 @@ initialFocus="input"
5443
5649
  summary: "A button that lives inside a sentence.",
5444
5650
  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.",
5445
5651
  category: "primitives",
5446
- version: "11.9.0",
5652
+ version: "11.10.0",
5447
5653
  bindings: {
5448
5654
  angular: {
5449
5655
  importPath: "@uni-design-system/uni-angular",
@@ -5558,7 +5764,7 @@ initialFocus="input"
5558
5764
  summary: "",
5559
5765
  description: "",
5560
5766
  category: "forms",
5561
- version: "11.9.0",
5767
+ version: "11.10.0",
5562
5768
  bindings: {
5563
5769
  angular: {
5564
5770
  importPath: "@uni-design-system/uni-angular",
@@ -5858,7 +6064,7 @@ initialFocus="input"
5858
6064
  summary: "",
5859
6065
  description: "",
5860
6066
  category: "forms",
5861
- version: "11.9.0",
6067
+ version: "11.10.0",
5862
6068
  bindings: {
5863
6069
  angular: {
5864
6070
  importPath: "@uni-design-system/uni-angular",
@@ -5987,7 +6193,7 @@ initialFocus="input"
5987
6193
  summary: "",
5988
6194
  description: "",
5989
6195
  category: "components",
5990
- version: "11.9.0",
6196
+ version: "11.10.0",
5991
6197
  bindings: {
5992
6198
  angular: {
5993
6199
  importPath: "@uni-design-system/uni-angular",
@@ -6057,7 +6263,7 @@ initialFocus="input"
6057
6263
  summary: "",
6058
6264
  description: "",
6059
6265
  category: "layout",
6060
- version: "11.9.0",
6266
+ version: "11.10.0",
6061
6267
  bindings: {
6062
6268
  angular: {
6063
6269
  importPath: "@uni-design-system/uni-angular",
@@ -6161,7 +6367,7 @@ initialFocus="input"
6161
6367
  summary: "",
6162
6368
  description: "",
6163
6369
  category: "layout",
6164
- version: "11.9.0",
6370
+ version: "11.10.0",
6165
6371
  bindings: {
6166
6372
  angular: {
6167
6373
  importPath: "@uni-design-system/uni-angular",
@@ -6243,7 +6449,7 @@ initialFocus="input"
6243
6449
  summary: "",
6244
6450
  description: "",
6245
6451
  category: "forms",
6246
- version: "11.9.0",
6452
+ version: "11.10.0",
6247
6453
  bindings: {
6248
6454
  angular: {
6249
6455
  importPath: "@uni-design-system/uni-angular",
@@ -6337,7 +6543,7 @@ initialFocus="input"
6337
6543
  summary: "",
6338
6544
  description: "",
6339
6545
  category: "forms",
6340
- version: "11.9.0",
6546
+ version: "11.10.0",
6341
6547
  bindings: {
6342
6548
  angular: {
6343
6549
  importPath: "@uni-design-system/uni-angular",
@@ -6516,7 +6722,7 @@ initialFocus="input"
6516
6722
  summary: "",
6517
6723
  description: "",
6518
6724
  category: "feedback",
6519
- version: "11.9.0",
6725
+ version: "11.10.0",
6520
6726
  bindings: {
6521
6727
  angular: {
6522
6728
  importPath: "@uni-design-system/uni-angular",
@@ -6776,7 +6982,7 @@ initialFocus="input"
6776
6982
  summary: "",
6777
6983
  description: "",
6778
6984
  category: "feedback",
6779
- version: "11.9.0",
6985
+ version: "11.10.0",
6780
6986
  bindings: {
6781
6987
  angular: {
6782
6988
  importPath: "@uni-design-system/uni-angular",
@@ -6800,7 +7006,7 @@ initialFocus="input"
6800
7006
  summary: "Numeric field with locale-aware parsing, `Intl` formatting on commit, prefix/suffix adornments and steppers that hold to repeat.",
6801
7007
  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.',
6802
7008
  category: "forms",
6803
- version: "11.9.0",
7009
+ version: "11.10.0",
6804
7010
  bindings: {
6805
7011
  angular: {
6806
7012
  importPath: "@uni-design-system/uni-angular",
@@ -7234,7 +7440,7 @@ initialFocus="input"
7234
7440
  summary: "Two linked numeric fields in one chrome, with one `{ start, end }` value \u2014 price filters, thresholds, tolerances.",
7235
7441
  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.",
7236
7442
  category: "forms",
7237
- version: "11.9.0",
7443
+ version: "11.10.0",
7238
7444
  bindings: {
7239
7445
  angular: {
7240
7446
  importPath: "@uni-design-system/uni-angular",
@@ -7525,7 +7731,7 @@ initialFocus="input"
7525
7731
  summary: "",
7526
7732
  description: "",
7527
7733
  category: "data",
7528
- version: "11.9.0",
7734
+ version: "11.10.0",
7529
7735
  bindings: {
7530
7736
  angular: {
7531
7737
  importPath: "@uni-design-system/uni-angular",
@@ -7626,7 +7832,7 @@ initialFocus="input"
7626
7832
  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.",
7627
7833
  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.',
7628
7834
  category: "layout",
7629
- version: "11.9.0",
7835
+ version: "11.10.0",
7630
7836
  bindings: {
7631
7837
  angular: {
7632
7838
  importPath: "@uni-design-system/uni-angular",
@@ -7818,7 +8024,7 @@ initialFocus="input"
7818
8024
  summary: "",
7819
8025
  description: "",
7820
8026
  category: "feedback",
7821
- version: "11.9.0",
8027
+ version: "11.10.0",
7822
8028
  bindings: {
7823
8029
  angular: {
7824
8030
  importPath: "@uni-design-system/uni-angular",
@@ -7882,7 +8088,7 @@ initialFocus="input"
7882
8088
  summary: "",
7883
8089
  description: "",
7884
8090
  category: "feedback",
7885
- version: "11.9.0",
8091
+ version: "11.10.0",
7886
8092
  bindings: {
7887
8093
  angular: {
7888
8094
  importPath: "@uni-design-system/uni-angular",
@@ -7954,7 +8160,7 @@ initialFocus="input"
7954
8160
  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.",
7955
8161
  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.',
7956
8162
  category: "forms",
7957
- version: "11.9.0",
8163
+ version: "11.10.0",
7958
8164
  bindings: {
7959
8165
  angular: {
7960
8166
  importPath: "@uni-design-system/uni-angular",
@@ -8157,7 +8363,7 @@ initialFocus="input"
8157
8363
  summary: "",
8158
8364
  description: "",
8159
8365
  category: "forms",
8160
- version: "11.9.0",
8366
+ version: "11.10.0",
8161
8367
  bindings: {
8162
8368
  angular: {
8163
8369
  importPath: "@uni-design-system/uni-angular",
@@ -8386,7 +8592,7 @@ initialFocus="input"
8386
8592
  summary: "Content for each of a radio group's options, in place of the plain label string.",
8387
8593
  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> ```',
8388
8594
  category: "forms",
8389
- version: "11.9.0",
8595
+ version: "11.10.0",
8390
8596
  bindings: {
8391
8597
  angular: {
8392
8598
  importPath: "@uni-design-system/uni-angular",
@@ -8410,7 +8616,7 @@ initialFocus="input"
8410
8616
  summary: "",
8411
8617
  description: "",
8412
8618
  category: "directives",
8413
- version: "11.9.0",
8619
+ version: "11.10.0",
8414
8620
  bindings: {
8415
8621
  angular: {
8416
8622
  importPath: "@uni-design-system/uni-angular",
@@ -8434,7 +8640,7 @@ initialFocus="input"
8434
8640
  summary: "",
8435
8641
  description: "",
8436
8642
  category: "layout",
8437
- version: "11.9.0",
8643
+ version: "11.10.0",
8438
8644
  bindings: {
8439
8645
  angular: {
8440
8646
  importPath: "@uni-design-system/uni-angular",
@@ -8489,7 +8695,7 @@ initialFocus="input"
8489
8695
  summary: "Native scroll area with theme-driven scrollbar styling.",
8490
8696
  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.",
8491
8697
  category: "layout",
8492
- version: "11.9.0",
8698
+ version: "11.10.0",
8493
8699
  bindings: {
8494
8700
  angular: {
8495
8701
  importPath: "@uni-design-system/uni-angular",
@@ -8656,7 +8862,7 @@ initialFocus="input"
8656
8862
  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.",
8657
8863
  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.",
8658
8864
  category: "forms",
8659
- version: "11.9.0",
8865
+ version: "11.10.0",
8660
8866
  bindings: {
8661
8867
  angular: {
8662
8868
  importPath: "@uni-design-system/uni-angular",
@@ -8791,7 +8997,7 @@ initialFocus="input"
8791
8997
  summary: "",
8792
8998
  description: "",
8793
8999
  category: "forms",
8794
- version: "11.9.0",
9000
+ version: "11.10.0",
8795
9001
  bindings: {
8796
9002
  angular: {
8797
9003
  importPath: "@uni-design-system/uni-angular",
@@ -8963,7 +9169,7 @@ initialFocus="input"
8963
9169
  summary: "Loading placeholder painted with surface tokens.",
8964
9170
  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.",
8965
9171
  category: "components",
8966
- version: "11.9.0",
9172
+ version: "11.10.0",
8967
9173
  bindings: {
8968
9174
  angular: {
8969
9175
  importPath: "@uni-design-system/uni-angular",
@@ -9114,7 +9320,7 @@ initialFocus="input"
9114
9320
  summary: "Bounded numeric input by pointer, for values where the *position* is the information: volume, opacity, weightings, price filters.",
9115
9321
  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.",
9116
9322
  category: "forms",
9117
- version: "11.9.0",
9323
+ version: "11.10.0",
9118
9324
  bindings: {
9119
9325
  angular: {
9120
9326
  importPath: "@uni-design-system/uni-angular",
@@ -9391,7 +9597,7 @@ initialFocus="input"
9391
9597
  summary: "",
9392
9598
  description: "",
9393
9599
  category: "feedback",
9394
- version: "11.9.0",
9600
+ version: "11.10.0",
9395
9601
  bindings: {
9396
9602
  angular: {
9397
9603
  importPath: "@uni-design-system/uni-angular",
@@ -9503,7 +9709,7 @@ initialFocus="input"
9503
9709
  summary: "",
9504
9710
  description: "",
9505
9711
  category: "data",
9506
- version: "11.9.0",
9712
+ version: "11.10.0",
9507
9713
  bindings: {
9508
9714
  angular: {
9509
9715
  importPath: "@uni-design-system/uni-angular",
@@ -9577,7 +9783,7 @@ initialFocus="input"
9577
9783
  summary: "",
9578
9784
  description: "",
9579
9785
  category: "layout",
9580
- version: "11.9.0",
9786
+ version: "11.10.0",
9581
9787
  bindings: {
9582
9788
  angular: {
9583
9789
  importPath: "@uni-design-system/uni-angular",
@@ -9632,7 +9838,7 @@ initialFocus="input"
9632
9838
  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.',
9633
9839
  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.',
9634
9840
  category: "components",
9635
- version: "11.9.0",
9841
+ version: "11.10.0",
9636
9842
  bindings: {
9637
9843
  angular: {
9638
9844
  importPath: "@uni-design-system/uni-angular",
@@ -9750,7 +9956,7 @@ initialFocus="input"
9750
9956
  summary: "",
9751
9957
  description: "",
9752
9958
  category: "primitives",
9753
- version: "11.9.0",
9959
+ version: "11.10.0",
9754
9960
  bindings: {
9755
9961
  angular: {
9756
9962
  importPath: "@uni-design-system/uni-angular",
@@ -9839,7 +10045,7 @@ initialFocus="input"
9839
10045
  summary: "One tab inside `uni-tabs`: a label for the tablist plus projected panel content.",
9840
10046
  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.",
9841
10047
  category: "components",
9842
- version: "11.9.0",
10048
+ version: "11.10.0",
9843
10049
  bindings: {
9844
10050
  angular: {
9845
10051
  importPath: "@uni-design-system/uni-angular",
@@ -9879,7 +10085,7 @@ initialFocus="input"
9879
10085
  summary: "WAI-ARIA tabs: roving tabindex, automatic activation (arrow keys move focus and select), Home/End, disabled tabs skipped.",
9880
10086
  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.",
9881
10087
  category: "components",
9882
- version: "11.9.0",
10088
+ version: "11.10.0",
9883
10089
  bindings: {
9884
10090
  angular: {
9885
10091
  importPath: "@uni-design-system/uni-angular",
@@ -9967,7 +10173,7 @@ initialFocus="input"
9967
10173
  summary: "Compact chip for categories, states, filters and tokens.",
9968
10174
  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.",
9969
10175
  category: "data",
9970
- version: "11.9.0",
10176
+ version: "11.10.0",
9971
10177
  bindings: {
9972
10178
  angular: {
9973
10179
  importPath: "@uni-design-system/uni-angular",
@@ -10345,7 +10551,7 @@ initialFocus="input"
10345
10551
  summary: "A row of chips the user picks from: filters, facets, a set of labels.",
10346
10552
  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.",
10347
10553
  category: "data",
10348
- version: "11.9.0",
10554
+ version: "11.10.0",
10349
10555
  bindings: {
10350
10556
  angular: {
10351
10557
  importPath: "@uni-design-system/uni-angular",
@@ -10543,7 +10749,7 @@ initialFocus="input"
10543
10749
  summary: "",
10544
10750
  description: "",
10545
10751
  category: "forms",
10546
- version: "11.9.0",
10752
+ version: "11.10.0",
10547
10753
  bindings: {
10548
10754
  angular: {
10549
10755
  importPath: "@uni-design-system/uni-angular",
@@ -10994,7 +11200,7 @@ placeholder="Name or address\u2026"
10994
11200
  summary: "The typography primitive, applied as an attribute to any element so semantics stay yours.",
10995
11201
  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.',
10996
11202
  category: "primitives",
10997
- version: "11.9.0",
11203
+ version: "11.10.0",
10998
11204
  bindings: {
10999
11205
  angular: {
11000
11206
  importPath: "@uni-design-system/uni-angular",
@@ -11104,7 +11310,7 @@ placeholder="Name or address\u2026"
11104
11310
  summary: "",
11105
11311
  description: "",
11106
11312
  category: "forms",
11107
- version: "11.9.0",
11313
+ version: "11.10.0",
11108
11314
  bindings: {
11109
11315
  angular: {
11110
11316
  importPath: "@uni-design-system/uni-angular",
@@ -11319,7 +11525,7 @@ placeholder="Name or address\u2026"
11319
11525
  summary: "",
11320
11526
  description: "",
11321
11527
  category: "primitives",
11322
- version: "11.9.0",
11528
+ version: "11.10.0",
11323
11529
  bindings: {
11324
11530
  angular: {
11325
11531
  importPath: "@uni-design-system/uni-angular",
@@ -11349,7 +11555,7 @@ placeholder="Name or address\u2026"
11349
11555
  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).",
11350
11556
  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).",
11351
11557
  category: "components",
11352
- version: "11.9.0",
11558
+ version: "11.10.0",
11353
11559
  bindings: {
11354
11560
  angular: {
11355
11561
  importPath: "@uni-design-system/uni-angular",
@@ -11407,7 +11613,7 @@ placeholder="Name or address\u2026"
11407
11613
  summary: "Time field: a combobox over time options \u2014 the same listbox contract as uni-search-input and uni-tag-input.",
11408
11614
  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.",
11409
11615
  category: "forms",
11410
- version: "11.9.0",
11616
+ version: "11.10.0",
11411
11617
  bindings: {
11412
11618
  angular: {
11413
11619
  importPath: "@uni-design-system/uni-angular",
@@ -11622,7 +11828,7 @@ placeholder="Name or address\u2026"
11622
11828
  summary: "",
11623
11829
  description: "",
11624
11830
  category: "forms",
11625
- version: "11.9.0",
11831
+ version: "11.10.0",
11626
11832
  bindings: {
11627
11833
  angular: {
11628
11834
  importPath: "@uni-design-system/uni-angular",
@@ -11884,7 +12090,7 @@ placeholder="Name or address\u2026"
11884
12090
  summary: "",
11885
12091
  description: "",
11886
12092
  category: "feedback",
11887
- version: "11.9.0",
12093
+ version: "11.10.0",
11888
12094
  bindings: {
11889
12095
  angular: {
11890
12096
  importPath: "@uni-design-system/uni-angular",
@@ -11972,7 +12178,7 @@ placeholder="Name or address\u2026"
11972
12178
  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).',
11973
12179
  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.',
11974
12180
  category: "components",
11975
- version: "11.9.0",
12181
+ version: "11.10.0",
11976
12182
  bindings: {
11977
12183
  angular: {
11978
12184
  importPath: "@uni-design-system/uni-angular",
@@ -12106,7 +12312,7 @@ placeholder="Name or address\u2026"
12106
12312
  summary: "",
12107
12313
  description: "",
12108
12314
  category: "layout",
12109
- version: "11.9.0",
12315
+ version: "11.10.0",
12110
12316
  bindings: {
12111
12317
  angular: {
12112
12318
  importPath: "@uni-design-system/uni-angular",
@@ -16868,6 +17074,54 @@ placeholder="Name or address\u2026"
16868
17074
  DarkTheme: "xs"
16869
17075
  }
16870
17076
  },
17077
+ {
17078
+ id: "card.behavior.selectedBorder",
17079
+ value: "primary",
17080
+ type: "string",
17081
+ kind: "behavioral",
17082
+ target: "component-prop",
17083
+ appliesTo: "card",
17084
+ themeValues: {
17085
+ LightTheme: "primary",
17086
+ DarkTheme: "primary"
17087
+ }
17088
+ },
17089
+ {
17090
+ id: "card.behavior.selectedColor",
17091
+ value: "primary-container",
17092
+ type: "string",
17093
+ kind: "behavioral",
17094
+ target: "component-prop",
17095
+ appliesTo: "card",
17096
+ themeValues: {
17097
+ LightTheme: "primary-container",
17098
+ DarkTheme: "primary-container"
17099
+ }
17100
+ },
17101
+ {
17102
+ id: "cardGroup.behavior.gap",
17103
+ value: "md",
17104
+ type: "string",
17105
+ kind: "behavioral",
17106
+ target: "component-prop",
17107
+ appliesTo: "cardGroup",
17108
+ themeValues: {
17109
+ LightTheme: "md",
17110
+ DarkTheme: "md"
17111
+ }
17112
+ },
17113
+ {
17114
+ id: "cardGroup.behavior.templateColumns",
17115
+ value: "repeat(auto-fit, minmax(160px, 1fr))",
17116
+ type: "string",
17117
+ kind: "behavioral",
17118
+ target: "component-prop",
17119
+ appliesTo: "cardGroup",
17120
+ themeValues: {
17121
+ LightTheme: "repeat(auto-fit, minmax(160px, 1fr))",
17122
+ DarkTheme: "repeat(auto-fit, minmax(160px, 1fr))"
17123
+ }
17124
+ },
16871
17125
  {
16872
17126
  id: "dataSearch.behavior.border",
16873
17127
  value: "light",
@@ -18674,7 +18928,13 @@ placeholder="Name or address\u2026"
18674
18928
  gap: "xxs"
18675
18929
  },
18676
18930
  card: {
18677
- borderRadius: "xs"
18931
+ borderRadius: "xs",
18932
+ selectedBorder: "primary",
18933
+ selectedColor: "primary-container"
18934
+ },
18935
+ cardGroup: {
18936
+ gap: "md",
18937
+ templateColumns: "repeat(auto-fit, minmax(160px, 1fr))"
18678
18938
  },
18679
18939
  dataSearch: {
18680
18940
  border: "light",
@@ -19310,7 +19570,13 @@ placeholder="Name or address\u2026"
19310
19570
  gap: "xxs"
19311
19571
  },
19312
19572
  card: {
19313
- borderRadius: "xs"
19573
+ borderRadius: "xs",
19574
+ selectedBorder: "primary",
19575
+ selectedColor: "primary-container"
19576
+ },
19577
+ cardGroup: {
19578
+ gap: "md",
19579
+ templateColumns: "repeat(auto-fit, minmax(160px, 1fr))"
19314
19580
  },
19315
19581
  dataSearch: {
19316
19582
  border: "light",
@@ -19455,6 +19721,18 @@ placeholder="Name or address\u2026"
19455
19721
  {
19456
19722
  package: "@uni-design-system/uni-angular",
19457
19723
  releases: [
19724
+ {
19725
+ version: "11.10.0",
19726
+ entries: [
19727
+ {
19728
+ bump: "minor",
19729
+ title: "`uni-card` gains states a theme can paint, and `uni-card-group` makes a pick-one grid of them.",
19730
+ body: "- **The frame is an Emotion class**, no longer an inline `[style]`. An inline style outranks every class, so no theme rule could express a state. One thing to know: a consumer stylesheet that was silently losing to the card's inline frame will start winning. Nothing in the base or storybook themes moves.\n- **`selected`** and **`interactive`** inputs add `card-selected` and `card-interactive` to the frame \u2014 the contract `uni-tag` has had since 11.1 \u2014 and the `card` theme entry gains `selectedBorder` (`primary` by default), `selectedColor` (`primary-container` by default \u2014 every card already wears the primary frame under the base theme, so the fill is what makes a pick visible), `selectedElevation`, `hoverColor` and `focusRingColor` for the common case; a variant's own `&.card-selected` rule reaches it for anything else. An interactive card emits `activated` on click, Space or Enter, and leaves clicks on its own content's controls alone. `disabled` is read.\n- **`[dialog-header]` follow-ups** (`dialog-rich-head-followups-2026-10-22.md`): a `rich` head finds its `[dialog-title]` in the DOM, so a title projected _through_ a wrapper component's template \u2014 invisible to a content query, and unable to inject the dialog \u2014 still names the dialog alone; and with no marked title it defers to the dialog's own `ariaLabel` rather than naming a wrapped sheet by its whole head. The header's close button, in both shapes, follows the dialog's `defaultCloseButton`, as the drawer header's follows the drawer's \u2014 a sheet that closes from its footer says `[defaultCloseButton]=\"false\"` once. **`[dialog-buttons]`, `[drawer-buttons]`**: an `alignItems` theme option, default `center`, so a one-line footnote sits on the buttons' centre line instead of stretched to the row's top edge; the pair renders as before.\n- **`uni-card-group`** (new): a `role=\"radiogroup\"` over the `uni-card`s projected into it. Each card with a `value` becomes a `role=\"radio\"` whose selection and tab stop the group drives; a card without one is plain content. `FormValueControl<T | null>` (`value`, `disabled`, `touched`/`touch`, `invalid`, `dirty`, `required`, `ariaDescribedBy`), named by `ariaLabel` or `ariaLabelledBy`, `activated` on a pick. APG radio keyboard model: one tab stop, arrows move and select (wrapping), Home/End, Space or Enter. Laid out as a grid from `templateColumns` and `gap`, with defaults in the new `cardGroup` theme entry. Single-select; `multiple` is deliberately not here until a case asks for it.",
19731
+ commit: "c5ba475"
19732
+ }
19733
+ ],
19734
+ dependencyBumps: []
19735
+ },
19458
19736
  {
19459
19737
  version: "11.9.0",
19460
19738
  entries: [
@@ -20455,6 +20733,18 @@ placeholder="Name or address\u2026"
20455
20733
  {
20456
20734
  package: "@uni-design-system/uni-core",
20457
20735
  releases: [
20736
+ {
20737
+ version: "11.10.0",
20738
+ entries: [
20739
+ {
20740
+ bump: "minor",
20741
+ title: "`uni-card` gains states a theme can paint, and `uni-card-group` makes a pick-one grid of them.",
20742
+ body: "- **The frame is an Emotion class**, no longer an inline `[style]`. An inline style outranks every class, so no theme rule could express a state. One thing to know: a consumer stylesheet that was silently losing to the card's inline frame will start winning. Nothing in the base or storybook themes moves.\n- **`selected`** and **`interactive`** inputs add `card-selected` and `card-interactive` to the frame \u2014 the contract `uni-tag` has had since 11.1 \u2014 and the `card` theme entry gains `selectedBorder` (`primary` by default), `selectedColor` (`primary-container` by default \u2014 every card already wears the primary frame under the base theme, so the fill is what makes a pick visible), `selectedElevation`, `hoverColor` and `focusRingColor` for the common case; a variant's own `&.card-selected` rule reaches it for anything else. An interactive card emits `activated` on click, Space or Enter, and leaves clicks on its own content's controls alone. `disabled` is read.\n- **`[dialog-header]` follow-ups** (`dialog-rich-head-followups-2026-10-22.md`): a `rich` head finds its `[dialog-title]` in the DOM, so a title projected _through_ a wrapper component's template \u2014 invisible to a content query, and unable to inject the dialog \u2014 still names the dialog alone; and with no marked title it defers to the dialog's own `ariaLabel` rather than naming a wrapped sheet by its whole head. The header's close button, in both shapes, follows the dialog's `defaultCloseButton`, as the drawer header's follows the drawer's \u2014 a sheet that closes from its footer says `[defaultCloseButton]=\"false\"` once. **`[dialog-buttons]`, `[drawer-buttons]`**: an `alignItems` theme option, default `center`, so a one-line footnote sits on the buttons' centre line instead of stretched to the row's top edge; the pair renders as before.\n- **`uni-card-group`** (new): a `role=\"radiogroup\"` over the `uni-card`s projected into it. Each card with a `value` becomes a `role=\"radio\"` whose selection and tab stop the group drives; a card without one is plain content. `FormValueControl<T | null>` (`value`, `disabled`, `touched`/`touch`, `invalid`, `dirty`, `required`, `ariaDescribedBy`), named by `ariaLabel` or `ariaLabelledBy`, `activated` on a pick. APG radio keyboard model: one tab stop, arrows move and select (wrapping), Home/End, Space or Enter. Laid out as a grid from `templateColumns` and `gap`, with defaults in the new `cardGroup` theme entry. Single-select; `multiple` is deliberately not here until a case asks for it.",
20743
+ commit: "c5ba475"
20744
+ }
20745
+ ],
20746
+ dependencyBumps: []
20747
+ },
20458
20748
  {
20459
20749
  version: "11.9.0",
20460
20750
  entries: [
@@ -21180,6 +21470,11 @@ placeholder="Name or address\u2026"
21180
21470
  {
21181
21471
  package: "@uni-design-system/uni-react",
21182
21472
  releases: [
21473
+ {
21474
+ version: "11.10.0",
21475
+ entries: [],
21476
+ dependencyBumps: []
21477
+ },
21183
21478
  {
21184
21479
  version: "11.9.0",
21185
21480
  entries: [],
@@ -21506,6 +21801,11 @@ placeholder="Name or address\u2026"
21506
21801
  {
21507
21802
  package: "@uni-design-system/uni-mcp",
21508
21803
  releases: [
21804
+ {
21805
+ version: "11.10.0",
21806
+ entries: [],
21807
+ dependencyBumps: []
21808
+ },
21509
21809
  {
21510
21810
  version: "11.9.0",
21511
21811
  entries: [],
@@ -21790,7 +22090,7 @@ placeholder="Name or address\u2026"
21790
22090
  summary: "Returns a document-unique id for wiring ARIA relationships (aria-controls, aria-describedby, aria-labelledby, ...).",
21791
22091
  description: "Returns a document-unique id for wiring ARIA relationships (aria-controls, aria-describedby, aria-labelledby, ...).",
21792
22092
  members: [],
21793
- version: "11.9.0"
22093
+ version: "11.10.0"
21794
22094
  },
21795
22095
  {
21796
22096
  id: "focusable-selector",
@@ -21802,7 +22102,7 @@ placeholder="Name or address\u2026"
21802
22102
  summary: "Selector matching natively focusable elements.",
21803
22103
  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.",
21804
22104
  members: [],
21805
- version: "11.9.0"
22105
+ version: "11.10.0"
21806
22106
  },
21807
22107
  {
21808
22108
  id: "resolve-focus-target",
@@ -21814,7 +22114,7 @@ placeholder="Name or address\u2026"
21814
22114
  summary: "Resolves the element that should carry ARIA state for a trigger: the element itself when focusable, otherwise its first focusable descendant.",
21815
22115
  description: "Resolves the element that should carry ARIA state for a trigger: the element itself when focusable, otherwise its first focusable descendant.",
21816
22116
  members: [],
21817
- version: "11.9.0"
22117
+ version: "11.10.0"
21818
22118
  },
21819
22119
  {
21820
22120
  id: "visually-hidden",
@@ -21826,7 +22126,7 @@ placeholder="Name or address\u2026"
21826
22126
  summary: "Visually hides content while keeping it available to screen readers.",
21827
22127
  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.",
21828
22128
  members: [],
21829
- version: "11.9.0"
22129
+ version: "11.10.0"
21830
22130
  },
21831
22131
  {
21832
22132
  id: "motion-safe",
@@ -21838,7 +22138,7 @@ placeholder="Name or address\u2026"
21838
22138
  summary: "Wraps animation/transition styles so they only apply when the user has not requested reduced motion (WCAG 2.3.3).",
21839
22139
  description: "Wraps animation/transition styles so they only apply when the user has not requested reduced motion (WCAG 2.3.3).",
21840
22140
  members: [],
21841
- version: "11.9.0"
22141
+ version: "11.10.0"
21842
22142
  },
21843
22143
  {
21844
22144
  id: "announcer",
@@ -21863,7 +22163,7 @@ placeholder="Name or address\u2026"
21863
22163
  description: "Announce `text`, even when it repeats what was just announced."
21864
22164
  }
21865
22165
  ],
21866
- version: "11.9.0"
22166
+ version: "11.10.0"
21867
22167
  },
21868
22168
  {
21869
22169
  id: "create-announcer",
@@ -21875,7 +22175,7 @@ placeholder="Name or address\u2026"
21875
22175
  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.",
21876
22176
  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.",
21877
22177
  members: [],
21878
- version: "11.9.0"
22178
+ version: "11.10.0"
21879
22179
  },
21880
22180
  {
21881
22181
  id: "uni-date",
@@ -21887,7 +22187,7 @@ placeholder="Name or address\u2026"
21887
22187
  summary: "A calendar date, `'YYYY-MM-DD'`.",
21888
22188
  description: "A calendar date, `'YYYY-MM-DD'`.",
21889
22189
  members: [],
21890
- version: "11.9.0"
22190
+ version: "11.10.0"
21891
22191
  },
21892
22192
  {
21893
22193
  id: "uni-time",
@@ -21899,7 +22199,7 @@ placeholder="Name or address\u2026"
21899
22199
  summary: "A wall-clock time, `'HH:mm'` (24-hour).",
21900
22200
  description: "A wall-clock time, `'HH:mm'` (24-hour). Display format is separate.",
21901
22201
  members: [],
21902
- version: "11.9.0"
22202
+ version: "11.10.0"
21903
22203
  },
21904
22204
  {
21905
22205
  id: "uni-date-time",
@@ -21911,7 +22211,7 @@ placeholder="Name or address\u2026"
21911
22211
  summary: "A combined date and time, `'YYYY-MM-DDTHH:mm'`.",
21912
22212
  description: "A combined date and time, `'YYYY-MM-DDTHH:mm'`.",
21913
22213
  members: [],
21914
- version: "11.9.0"
22214
+ version: "11.10.0"
21915
22215
  },
21916
22216
  {
21917
22217
  id: "uni-date-range",
@@ -21936,7 +22236,7 @@ placeholder="Name or address\u2026"
21936
22236
  description: ""
21937
22237
  }
21938
22238
  ],
21939
- version: "11.9.0"
22239
+ version: "11.10.0"
21940
22240
  },
21941
22241
  {
21942
22242
  id: "iso-date",
@@ -21948,7 +22248,7 @@ placeholder="Name or address\u2026"
21948
22248
  summary: "`(2026, 8, 5)` \u2192 `'2026-08-05'`.",
21949
22249
  description: "`(2026, 8, 5)` \u2192 `'2026-08-05'`. Does not validate \u2014 see `isValidDate`.",
21950
22250
  members: [],
21951
- version: "11.9.0"
22251
+ version: "11.10.0"
21952
22252
  },
21953
22253
  {
21954
22254
  id: "is-valid-date",
@@ -21960,7 +22260,7 @@ placeholder="Name or address\u2026"
21960
22260
  summary: "The ISO date when the parts form a real calendar day, else `null`.",
21961
22261
  description: "The ISO date when the parts form a real calendar day, else `null`.",
21962
22262
  members: [],
21963
- version: "11.9.0"
22263
+ version: "11.10.0"
21964
22264
  },
21965
22265
  {
21966
22266
  id: "days-in-month",
@@ -21972,7 +22272,7 @@ placeholder="Name or address\u2026"
21972
22272
  summary: "Days in a month, leap-year aware.",
21973
22273
  description: "Days in a month, leap-year aware.",
21974
22274
  members: [],
21975
- version: "11.9.0"
22275
+ version: "11.10.0"
21976
22276
  },
21977
22277
  {
21978
22278
  id: "add-days",
@@ -21984,7 +22284,7 @@ placeholder="Name or address\u2026"
21984
22284
  summary: "",
21985
22285
  description: "",
21986
22286
  members: [],
21987
- version: "11.9.0"
22287
+ version: "11.10.0"
21988
22288
  },
21989
22289
  {
21990
22290
  id: "add-months",
@@ -21996,7 +22296,7 @@ placeholder="Name or address\u2026"
21996
22296
  summary: "Same day \xB1 n months, clamping the day to the target month's length.",
21997
22297
  description: "Same day \xB1 n months, clamping the day to the target month's length.",
21998
22298
  members: [],
21999
- version: "11.9.0"
22299
+ version: "11.10.0"
22000
22300
  },
22001
22301
  {
22002
22302
  id: "day-of-week",
@@ -22008,7 +22308,7 @@ placeholder="Name or address\u2026"
22008
22308
  summary: "Day of week, 0 = Sunday \u2026 6 = Saturday.",
22009
22309
  description: "Day of week, 0 = Sunday \u2026 6 = Saturday.",
22010
22310
  members: [],
22011
- version: "11.9.0"
22311
+ version: "11.10.0"
22012
22312
  },
22013
22313
  {
22014
22314
  id: "month-of",
@@ -22020,7 +22320,7 @@ placeholder="Name or address\u2026"
22020
22320
  summary: "`'2026-08-20'` \u2192 `'2026-08'`.",
22021
22321
  description: "`'2026-08-20'` \u2192 `'2026-08'`.",
22022
22322
  members: [],
22023
- version: "11.9.0"
22323
+ version: "11.10.0"
22024
22324
  },
22025
22325
  {
22026
22326
  id: "today-iso",
@@ -22032,7 +22332,7 @@ placeholder="Name or address\u2026"
22032
22332
  summary: "Today as a local-wall-clock ISO date (the one place local time matters).",
22033
22333
  description: "Today as a local-wall-clock ISO date (the one place local time matters).",
22034
22334
  members: [],
22035
- version: "11.9.0"
22335
+ version: "11.10.0"
22036
22336
  },
22037
22337
  {
22038
22338
  id: "inclusive-day-count",
@@ -22044,7 +22344,7 @@ placeholder="Name or address\u2026"
22044
22344
  summary: "Inclusive day count of a range: `('-20', '-24')` \u2192 5.",
22045
22345
  description: "Inclusive day count of a range: `('-20', '-24')` \u2192 5.",
22046
22346
  members: [],
22047
- version: "11.9.0"
22347
+ version: "11.10.0"
22048
22348
  },
22049
22349
  {
22050
22350
  id: "uni-month-grid-cell",
@@ -22069,7 +22369,7 @@ placeholder="Name or address\u2026"
22069
22369
  description: "True for leading/trailing cells that belong to the adjacent months."
22070
22370
  }
22071
22371
  ],
22072
- version: "11.9.0"
22372
+ version: "11.10.0"
22073
22373
  },
22074
22374
  {
22075
22375
  id: "build-month-grid",
@@ -22081,7 +22381,7 @@ placeholder="Name or address\u2026"
22081
22381
  summary: "The week matrix a calendar renders: full weeks covering `'YYYY-MM'`, starting on `weekStart` (0 = Sunday).",
22082
22382
  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.",
22083
22383
  members: [],
22084
- version: "11.9.0"
22384
+ version: "11.10.0"
22085
22385
  },
22086
22386
  {
22087
22387
  id: "format-date",
@@ -22093,7 +22393,7 @@ placeholder="Name or address\u2026"
22093
22393
  summary: "",
22094
22394
  description: "",
22095
22395
  members: [],
22096
- version: "11.9.0"
22396
+ version: "11.10.0"
22097
22397
  },
22098
22398
  {
22099
22399
  id: "format-month-heading",
@@ -22105,7 +22405,7 @@ placeholder="Name or address\u2026"
22105
22405
  summary: "`'2026-08'` \u2192 `'August 2026'` in the locale.",
22106
22406
  description: "`'2026-08'` \u2192 `'August 2026'` in the locale.",
22107
22407
  members: [],
22108
- version: "11.9.0"
22408
+ version: "11.10.0"
22109
22409
  },
22110
22410
  {
22111
22411
  id: "uni-weekday-name",
@@ -22130,7 +22430,7 @@ placeholder="Name or address\u2026"
22130
22430
  description: "Full weekday name, for the columnheader's `abbr`."
22131
22431
  }
22132
22432
  ],
22133
- version: "11.9.0"
22433
+ version: "11.10.0"
22134
22434
  },
22135
22435
  {
22136
22436
  id: "weekday-names",
@@ -22142,7 +22442,7 @@ placeholder="Name or address\u2026"
22142
22442
  summary: "Weekday header labels starting at `weekStart` (0 = Sunday).",
22143
22443
  description: "Weekday header labels starting at `weekStart` (0 = Sunday).",
22144
22444
  members: [],
22145
- version: "11.9.0"
22445
+ version: "11.10.0"
22146
22446
  },
22147
22447
  {
22148
22448
  id: "format-time",
@@ -22154,7 +22454,7 @@ placeholder="Name or address\u2026"
22154
22454
  summary: "`'15:00'` \u2192 `'3:00 PM'` (or `'15:00'` when `hour12` is false).",
22155
22455
  description: "`'15:00'` \u2192 `'3:00 PM'` (or `'15:00'` when `hour12` is false).",
22156
22456
  members: [],
22157
- version: "11.9.0"
22457
+ version: "11.10.0"
22158
22458
  },
22159
22459
  {
22160
22460
  id: "locale-week-start",
@@ -22166,7 +22466,7 @@ placeholder="Name or address\u2026"
22166
22466
  summary: "The locale's first day of week, 0 = Sunday \u2026 6 = Saturday.",
22167
22467
  description: "The locale's first day of week, 0 = Sunday \u2026 6 = Saturday. Falls back to Sunday where `Intl.Locale` week info is unavailable.",
22168
22468
  members: [],
22169
- version: "11.9.0"
22469
+ version: "11.10.0"
22170
22470
  },
22171
22471
  {
22172
22472
  id: "locale-default-hour12",
@@ -22178,7 +22478,7 @@ placeholder="Name or address\u2026"
22178
22478
  summary: "Whether the locale's default clock is 12-hour.",
22179
22479
  description: "Whether the locale's default clock is 12-hour.",
22180
22480
  members: [],
22181
- version: "11.9.0"
22481
+ version: "11.10.0"
22182
22482
  },
22183
22483
  {
22184
22484
  id: "locale-field-order",
@@ -22190,7 +22490,7 @@ placeholder="Name or address\u2026"
22190
22490
  summary: "The locale's numeric-date field order, e.g.",
22191
22491
  description: "The locale's numeric-date field order, e.g. en-US \u2192 month, day, year.",
22192
22492
  members: [],
22193
- version: "11.9.0"
22493
+ version: "11.10.0"
22194
22494
  },
22195
22495
  {
22196
22496
  id: "locale-month-names",
@@ -22202,7 +22502,7 @@ placeholder="Name or address\u2026"
22202
22502
  summary: "Long + short month names \u2192 month number, lowercased, dots stripped.",
22203
22503
  description: "Long + short month names \u2192 month number, lowercased, dots stripped.",
22204
22504
  members: [],
22205
- version: "11.9.0"
22505
+ version: "11.10.0"
22206
22506
  },
22207
22507
  {
22208
22508
  id: "locale-date-placeholder",
@@ -22214,7 +22514,7 @@ placeholder="Name or address\u2026"
22214
22514
  summary: "The locale's digit pattern as a placeholder, e.g.",
22215
22515
  description: "The locale's digit pattern as a placeholder, e.g. `'MM/DD/YYYY'`.",
22216
22516
  members: [],
22217
- version: "11.9.0"
22517
+ version: "11.10.0"
22218
22518
  },
22219
22519
  {
22220
22520
  id: "parse-date-text",
@@ -22226,7 +22526,7 @@ placeholder="Name or address\u2026"
22226
22526
  summary: "Free-typed date text \u2192 ISO date, or `null` when unreadable.",
22227
22527
  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.",
22228
22528
  members: [],
22229
- version: "11.9.0"
22529
+ version: "11.10.0"
22230
22530
  },
22231
22531
  {
22232
22532
  id: "parse-time-text",
@@ -22238,7 +22538,7 @@ placeholder="Name or address\u2026"
22238
22538
  summary: "Free-typed time text \u2192 `'HH:mm'`, or `null`.",
22239
22539
  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.",
22240
22540
  members: [],
22241
- version: "11.9.0"
22541
+ version: "11.10.0"
22242
22542
  },
22243
22543
  {
22244
22544
  id: "time-slots",
@@ -22250,7 +22550,7 @@ placeholder="Name or address\u2026"
22250
22550
  summary: "Every `minuteStep` time between `min` and `max` (inclusive bounds).",
22251
22551
  description: "Every `minuteStep` time between `min` and `max` (inclusive bounds).",
22252
22552
  members: [],
22253
- version: "11.9.0"
22553
+ version: "11.10.0"
22254
22554
  },
22255
22555
  {
22256
22556
  id: "split-date-time",
@@ -22262,7 +22562,7 @@ placeholder="Name or address\u2026"
22262
22562
  summary: "",
22263
22563
  description: "",
22264
22564
  members: [],
22265
- version: "11.9.0"
22565
+ version: "11.10.0"
22266
22566
  },
22267
22567
  {
22268
22568
  id: "join-date-time",
@@ -22274,7 +22574,7 @@ placeholder="Name or address\u2026"
22274
22574
  summary: "One combined value only when both parts are present.",
22275
22575
  description: "One combined value only when both parts are present.",
22276
22576
  members: [],
22277
- version: "11.9.0"
22577
+ version: "11.10.0"
22278
22578
  },
22279
22579
  {
22280
22580
  id: "uni-number-range",
@@ -22299,7 +22599,7 @@ placeholder="Name or address\u2026"
22299
22599
  description: ""
22300
22600
  }
22301
22601
  ],
22302
- version: "11.9.0"
22602
+ version: "11.10.0"
22303
22603
  },
22304
22604
  {
22305
22605
  id: "uni-rounding-mode",
@@ -22311,7 +22611,7 @@ placeholder="Name or address\u2026"
22311
22611
  summary: "How a tie is resolved when rounding to a fraction-digit count.",
22312
22612
  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`).",
22313
22613
  members: [],
22314
- version: "11.9.0"
22614
+ version: "11.10.0"
22315
22615
  },
22316
22616
  {
22317
22617
  id: "uni-number-preset",
@@ -22323,7 +22623,7 @@ placeholder="Name or address\u2026"
22323
22623
  summary: "Format archetype.",
22324
22624
  description: "Format archetype. Supplies decimals, grouping, affix and `inputmode`.",
22325
22625
  members: [],
22326
- version: "11.9.0"
22626
+ version: "11.10.0"
22327
22627
  },
22328
22628
  {
22329
22629
  id: "uni-number-grouping",
@@ -22335,7 +22635,7 @@ placeholder="Name or address\u2026"
22335
22635
  summary: "Thousands-separator policy, mapped onto `Intl`'s `useGrouping`.",
22336
22636
  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`.",
22337
22637
  members: [],
22338
- version: "11.9.0"
22638
+ version: "11.10.0"
22339
22639
  },
22340
22640
  {
22341
22641
  id: "uni-number-reject-reason",
@@ -22347,7 +22647,7 @@ placeholder="Name or address\u2026"
22347
22647
  summary: "Why a typed commit was refused.",
22348
22648
  description: "Why a typed commit was refused. The raw text stays in the field.",
22349
22649
  members: [],
22350
- version: "11.9.0"
22650
+ version: "11.10.0"
22351
22651
  },
22352
22652
  {
22353
22653
  id: "uni-number-step-config",
@@ -22390,7 +22690,7 @@ placeholder="Name or address\u2026"
22390
22690
  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`."
22391
22691
  }
22392
22692
  ],
22393
- version: "11.9.0"
22693
+ version: "11.10.0"
22394
22694
  },
22395
22695
  {
22396
22696
  id: "uni-number-clamp",
@@ -22415,7 +22715,7 @@ placeholder="Name or address\u2026"
22415
22715
  description: "Which fence was hit, or `null` when the value was already in range."
22416
22716
  }
22417
22717
  ],
22418
- version: "11.9.0"
22718
+ version: "11.10.0"
22419
22719
  },
22420
22720
  {
22421
22721
  id: "uni-locale-number-parts",
@@ -22458,7 +22758,7 @@ placeholder="Name or address\u2026"
22458
22758
  description: "Fraction digits `Intl` uses for the currency \u2014 JPY 0, USD 2."
22459
22759
  }
22460
22760
  ],
22461
- version: "11.9.0"
22761
+ version: "11.10.0"
22462
22762
  },
22463
22763
  {
22464
22764
  id: "uni-number-format-config",
@@ -22543,7 +22843,7 @@ placeholder="Name or address\u2026"
22543
22843
  description: "Spoken long form of an abbreviated suffix, for `aria-valuetext`."
22544
22844
  }
22545
22845
  ],
22546
- version: "11.9.0"
22846
+ version: "11.10.0"
22547
22847
  },
22548
22848
  {
22549
22849
  id: "uni-resolved-number-format",
@@ -22634,7 +22934,7 @@ placeholder="Name or address\u2026"
22634
22934
  description: ""
22635
22935
  }
22636
22936
  ],
22637
- version: "11.9.0"
22937
+ version: "11.10.0"
22638
22938
  },
22639
22939
  {
22640
22940
  id: "uni-number-parse-result",
@@ -22646,7 +22946,7 @@ placeholder="Name or address\u2026"
22646
22946
  summary: "The outcome of reading a user's text.",
22647
22947
  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.",
22648
22948
  members: [],
22649
- version: "11.9.0"
22949
+ version: "11.10.0"
22650
22950
  },
22651
22951
  {
22652
22952
  id: "is-canonical-decimal",
@@ -22658,7 +22958,7 @@ placeholder="Name or address\u2026"
22658
22958
  summary: "True when `text` is already a canonical decimal (leading/trailing space allowed).",
22659
22959
  description: "True when `text` is already a canonical decimal (leading/trailing space allowed).",
22660
22960
  members: [],
22661
- version: "11.9.0"
22961
+ version: "11.10.0"
22662
22962
  },
22663
22963
  {
22664
22964
  id: "decimal-scale",
@@ -22670,7 +22970,7 @@ placeholder="Name or address\u2026"
22670
22970
  summary: "Fraction-digit count.",
22671
22971
  description: "Fraction-digit count. `'1.250'` \u2192 3, `'12'` \u2192 0, `'5.'` \u2192 0.",
22672
22972
  members: [],
22673
- version: "11.9.0"
22973
+ version: "11.10.0"
22674
22974
  },
22675
22975
  {
22676
22976
  id: "to-scaled",
@@ -22682,7 +22982,7 @@ placeholder="Name or address\u2026"
22682
22982
  summary: "Canonical decimal \u2192 integer scaled by `10^scale`.",
22683
22983
  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)`.",
22684
22984
  members: [],
22685
- version: "11.9.0"
22985
+ version: "11.10.0"
22686
22986
  },
22687
22987
  {
22688
22988
  id: "from-scaled",
@@ -22694,7 +22994,7 @@ placeholder="Name or address\u2026"
22694
22994
  summary: "Scaled integer \u2192 canonical decimal, with trailing fraction zeros trimmed.",
22695
22995
  description: "Scaled integer \u2192 canonical decimal, with trailing fraction zeros trimmed.",
22696
22996
  members: [],
22697
- version: "11.9.0"
22997
+ version: "11.10.0"
22698
22998
  },
22699
22999
  {
22700
23000
  id: "normalize-decimal",
@@ -22706,7 +23006,7 @@ placeholder="Name or address\u2026"
22706
23006
  summary: "Strip a leading `+`, leading zeros and trailing fraction zeros: `'+01.50'` \u2192 `'1.5'`.",
22707
23007
  description: "Strip a leading `+`, leading zeros and trailing fraction zeros: `'+01.50'` \u2192 `'1.5'`. Requires a canonical decimal; guard with `isCanonicalDecimal`.",
22708
23008
  members: [],
22709
- version: "11.9.0"
23009
+ version: "11.10.0"
22710
23010
  },
22711
23011
  {
22712
23012
  id: "to-decimal",
@@ -22718,7 +23018,7 @@ placeholder="Name or address\u2026"
22718
23018
  summary: "Any numeric input \u2192 canonical decimal, expanding the exponential notation `String(number)` produces outside 1e-7\u20261e21.",
22719
23019
  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.",
22720
23020
  members: [],
22721
- version: "11.9.0"
23021
+ version: "11.10.0"
22722
23022
  },
22723
23023
  {
22724
23024
  id: "compare-decimal",
@@ -22730,7 +23030,7 @@ placeholder="Name or address\u2026"
22730
23030
  summary: "`-1` when `a < b`, `1` when `a > b`, `0` when equal.",
22731
23031
  description: "`-1` when `a < b`, `1` when `a > b`, `0` when equal. `'1.50'` equals `'1.5'`.",
22732
23032
  members: [],
22733
- version: "11.9.0"
23033
+ version: "11.10.0"
22734
23034
  },
22735
23035
  {
22736
23036
  id: "round-decimal",
@@ -22742,7 +23042,7 @@ placeholder="Name or address\u2026"
22742
23042
  summary: "Round to `fractionDigits`, breaking ties per `mode`.",
22743
23043
  description: "Round to `fractionDigits`, breaking ties per `mode`. Exact where `Number.prototype.toFixed` is not \u2014 see the file header.",
22744
23044
  members: [],
22745
- version: "11.9.0"
23045
+ version: "11.10.0"
22746
23046
  },
22747
23047
  {
22748
23048
  id: "shift-decimal",
@@ -22754,7 +23054,7 @@ placeholder="Name or address\u2026"
22754
23054
  summary: "Multiply by `10^places`, exactly.",
22755
23055
  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.",
22756
23056
  members: [],
22757
- version: "11.9.0"
23057
+ version: "11.10.0"
22758
23058
  },
22759
23059
  {
22760
23060
  id: "clamp-decimal",
@@ -22766,7 +23066,7 @@ placeholder="Name or address\u2026"
22766
23066
  summary: "Hold a value inside its fences, reporting which one it hit so the caller can announce it.",
22767
23067
  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.",
22768
23068
  members: [],
22769
- version: "11.9.0"
23069
+ version: "11.10.0"
22770
23070
  },
22771
23071
  {
22772
23072
  id: "step-decimal",
@@ -22778,7 +23078,7 @@ placeholder="Name or address\u2026"
22778
23078
  summary: "One step from `current`, in `direction` (`1` up, `-1` down).",
22779
23079
  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.",
22780
23080
  members: [],
22781
- version: "11.9.0"
23081
+ version: "11.10.0"
22782
23082
  },
22783
23083
  {
22784
23084
  id: "locale-number-parts",
@@ -22790,7 +23090,7 @@ placeholder="Name or address\u2026"
22790
23090
  summary: "Locale separators plus, when a currency is given, its symbol, side and fraction digits.",
22791
23091
  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.",
22792
23092
  members: [],
22793
- version: "11.9.0"
23093
+ version: "11.10.0"
22794
23094
  },
22795
23095
  {
22796
23096
  id: "to-ascii-digits",
@@ -22802,7 +23102,7 @@ placeholder="Name or address\u2026"
22802
23102
  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`.",
22803
23103
  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`.",
22804
23104
  members: [],
22805
- version: "11.9.0"
23105
+ version: "11.10.0"
22806
23106
  },
22807
23107
  {
22808
23108
  id: "evaluate-expression",
@@ -22814,7 +23114,7 @@ placeholder="Name or address\u2026"
22814
23114
  summary: "Evaluate `+ \u2212 \xD7 \xF7 ( )` over decimal literals \u2014 shunting-yard, roughly thirty lines, and **never `eval`**.",
22815
23115
  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.",
22816
23116
  members: [],
22817
- version: "11.9.0"
23117
+ version: "11.10.0"
22818
23118
  },
22819
23119
  {
22820
23120
  id: "resolve-number-format",
@@ -22826,7 +23126,7 @@ placeholder="Name or address\u2026"
22826
23126
  summary: "Fill in every preset, locale and currency default.",
22827
23127
  description: "Fill in every preset, locale and currency default.",
22828
23128
  members: [],
22829
- version: "11.9.0"
23129
+ version: "11.10.0"
22830
23130
  },
22831
23131
  {
22832
23132
  id: "parse-number",
@@ -22838,7 +23138,7 @@ placeholder="Name or address\u2026"
22838
23138
  summary: "Read a user's text into a canonical decimal in **model units**.",
22839
23139
  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.",
22840
23140
  members: [],
22841
- version: "11.9.0"
23141
+ version: "11.10.0"
22842
23142
  },
22843
23143
  {
22844
23144
  id: "format-number",
@@ -22850,7 +23150,7 @@ placeholder="Name or address\u2026"
22850
23150
  summary: "Canonical decimal (model units) \u2192 the display number, without affixes.",
22851
23151
  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`.",
22852
23152
  members: [],
22853
- version: "11.9.0"
23153
+ version: "11.10.0"
22854
23154
  },
22855
23155
  {
22856
23156
  id: "raw-number-text",
@@ -22862,7 +23162,7 @@ placeholder="Name or address\u2026"
22862
23162
  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.",
22863
23163
  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.",
22864
23164
  members: [],
22865
- version: "11.9.0"
23165
+ version: "11.10.0"
22866
23166
  },
22867
23167
  {
22868
23168
  id: "settle-number",
@@ -22874,7 +23174,7 @@ placeholder="Name or address\u2026"
22874
23174
  summary: "Round a committed value to the field's precision, in model units.",
22875
23175
  description: "Round a committed value to the field's precision, in model units.",
22876
23176
  members: [],
22877
- version: "11.9.0"
23177
+ version: "11.10.0"
22878
23178
  },
22879
23179
  {
22880
23180
  id: "speak-number",
@@ -22886,7 +23186,7 @@ placeholder="Name or address\u2026"
22886
23186
  summary: "The `aria-valuetext` string: the formatted number with its affixes spoken.",
22887
23187
  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.',
22888
23188
  members: [],
22889
- version: "11.9.0"
23189
+ version: "11.10.0"
22890
23190
  },
22891
23191
  {
22892
23192
  id: "to-number",
@@ -22898,7 +23198,7 @@ placeholder="Name or address\u2026"
22898
23198
  summary: "Model-units canonical decimal \u2192 the bound `number`.",
22899
23199
  description: "Model-units canonical decimal \u2192 the bound `number`.",
22900
23200
  members: [],
22901
- version: "11.9.0"
23201
+ version: "11.10.0"
22902
23202
  },
22903
23203
  {
22904
23204
  id: "loses-precision",
@@ -22910,7 +23210,7 @@ placeholder="Name or address\u2026"
22910
23210
  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.",
22911
23211
  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'`.",
22912
23212
  members: [],
22913
- version: "11.9.0"
23213
+ version: "11.10.0"
22914
23214
  },
22915
23215
  {
22916
23216
  id: "press-repeat-timing",
@@ -22947,7 +23247,7 @@ placeholder="Name or address\u2026"
22947
23247
  description: ""
22948
23248
  }
22949
23249
  ],
22950
- version: "11.9.0"
23250
+ version: "11.10.0"
22951
23251
  },
22952
23252
  {
22953
23253
  id: "press-repeat-config",
@@ -22996,7 +23296,7 @@ placeholder="Name or address\u2026"
22996
23296
  description: ""
22997
23297
  }
22998
23298
  ],
22999
- version: "11.9.0"
23299
+ version: "11.10.0"
23000
23300
  },
23001
23301
  {
23002
23302
  id: "press-repeat",
@@ -23033,7 +23333,7 @@ placeholder="Name or address\u2026"
23033
23333
  description: "End a hold without firing `onRelease` \u2014 for `Escape` and `pointercancel`."
23034
23334
  }
23035
23335
  ],
23036
- version: "11.9.0"
23336
+ version: "11.10.0"
23037
23337
  },
23038
23338
  {
23039
23339
  id: "create-press-repeat",
@@ -23045,7 +23345,7 @@ placeholder="Name or address\u2026"
23045
23345
  summary: "",
23046
23346
  description: "",
23047
23347
  members: [],
23048
- version: "11.9.0"
23348
+ version: "11.10.0"
23049
23349
  },
23050
23350
  {
23051
23351
  id: "listbox-navigation-config",
@@ -23088,7 +23388,7 @@ placeholder="Name or address\u2026"
23088
23388
  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."
23089
23389
  }
23090
23390
  ],
23091
- version: "11.9.0"
23391
+ version: "11.10.0"
23092
23392
  },
23093
23393
  {
23094
23394
  id: "listbox-navigation",
@@ -23161,7 +23461,7 @@ placeholder="Name or address\u2026"
23161
23461
  description: "Close when focus leaves the control entirely (not on internal moves)."
23162
23462
  }
23163
23463
  ],
23164
- version: "11.9.0"
23464
+ version: "11.10.0"
23165
23465
  },
23166
23466
  {
23167
23467
  id: "create-listbox-navigation",
@@ -23173,7 +23473,7 @@ placeholder="Name or address\u2026"
23173
23473
  summary: "Factory mirroring the signal-API style used elsewhere in the CDK.",
23174
23474
  description: "Factory mirroring the signal-API style used elsewhere in the CDK.",
23175
23475
  members: [],
23176
- version: "11.9.0"
23476
+ version: "11.10.0"
23177
23477
  },
23178
23478
  {
23179
23479
  id: "placement",
@@ -23185,7 +23485,7 @@ placeholder="Name or address\u2026"
23185
23485
  summary: "Native CSS Anchor Positioning helpers (Baseline 2026).",
23186
23486
  description: "Native CSS Anchor Positioning helpers (Baseline 2026). These replace the former",
23187
23487
  members: [],
23188
- version: "11.9.0"
23488
+ version: "11.10.0"
23189
23489
  },
23190
23490
  {
23191
23491
  id: "anchor-offset",
@@ -23210,7 +23510,7 @@ placeholder="Name or address\u2026"
23210
23510
  description: "Shift along the cross axis, from the aligned edge."
23211
23511
  }
23212
23512
  ],
23213
- version: "11.9.0"
23513
+ version: "11.10.0"
23214
23514
  },
23215
23515
  {
23216
23516
  id: "new-anchor-name",
@@ -23222,7 +23522,7 @@ placeholder="Name or address\u2026"
23222
23522
  summary: "Returns a document-unique dashed-ident usable as a CSS `anchor-name`.",
23223
23523
  description: "Returns a document-unique dashed-ident usable as a CSS `anchor-name`.",
23224
23524
  members: [],
23225
- version: "11.9.0"
23525
+ version: "11.10.0"
23226
23526
  },
23227
23527
  {
23228
23528
  id: "anchor-styles",
@@ -23234,7 +23534,7 @@ placeholder="Name or address\u2026"
23234
23534
  summary: "Emotion style object anchoring a panel to `anchor` at `placement`.",
23235
23535
  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`).",
23236
23536
  members: [],
23237
- version: "11.9.0"
23537
+ version: "11.10.0"
23238
23538
  },
23239
23539
  {
23240
23540
  id: "anchor-arrow-styles",
@@ -23246,7 +23546,7 @@ placeholder="Name or address\u2026"
23246
23546
  summary: "Absolute positioning for a rotated-square arrow sitting on the panel edge that faces the anchor.",
23247
23547
  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.",
23248
23548
  members: [],
23249
- version: "11.9.0"
23549
+ version: "11.10.0"
23250
23550
  },
23251
23551
  {
23252
23552
  id: "spotlight-options",
@@ -23277,7 +23577,7 @@ placeholder="Name or address\u2026"
23277
23577
  description: "Scrim paint; scheme-invariant by convention, like `::backdrop`."
23278
23578
  }
23279
23579
  ],
23280
- version: "11.9.0"
23580
+ version: "11.10.0"
23281
23581
  },
23282
23582
  {
23283
23583
  id: "spotlight-styles",
@@ -23308,7 +23608,7 @@ placeholder="Name or address\u2026"
23308
23608
  description: "Hole-sized click-blocker, shown when the target must not be interactive."
23309
23609
  }
23310
23610
  ],
23311
- version: "11.9.0"
23611
+ version: "11.10.0"
23312
23612
  },
23313
23613
  {
23314
23614
  id: "anchor-rect",
@@ -23357,7 +23657,7 @@ placeholder="Name or address\u2026"
23357
23657
  description: ""
23358
23658
  }
23359
23659
  ],
23360
- version: "11.9.0"
23660
+ version: "11.10.0"
23361
23661
  },
23362
23662
  {
23363
23663
  id: "transform-origin-for",
@@ -23369,7 +23669,7 @@ placeholder="Name or address\u2026"
23369
23669
  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.",
23370
23670
  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).",
23371
23671
  members: [],
23372
- version: "11.9.0"
23672
+ version: "11.10.0"
23373
23673
  },
23374
23674
  {
23375
23675
  id: "transform-origins",
@@ -23381,7 +23681,7 @@ placeholder="Name or address\u2026"
23381
23681
  summary: "Placement \u2192 `transform-origin`, so scale animations grow from the anchor.",
23382
23682
  description: "Placement \u2192 `transform-origin`, so scale animations grow from the anchor.",
23383
23683
  members: [],
23384
- version: "11.9.0"
23684
+ version: "11.10.0"
23385
23685
  },
23386
23686
  {
23387
23687
  id: "set-anchor-name",
@@ -23393,7 +23693,7 @@ placeholder="Name or address\u2026"
23393
23693
  summary: "Write a CSS `anchor-name` onto an element (detached anchors and targets).",
23394
23694
  description: "Write a CSS `anchor-name` onto an element (detached anchors and targets).",
23395
23695
  members: [],
23396
- version: "11.9.0"
23696
+ version: "11.10.0"
23397
23697
  },
23398
23698
  {
23399
23699
  id: "clear-anchor-name",
@@ -23405,7 +23705,7 @@ placeholder="Name or address\u2026"
23405
23705
  summary: "",
23406
23706
  description: "",
23407
23707
  members: [],
23408
- version: "11.9.0"
23708
+ version: "11.10.0"
23409
23709
  },
23410
23710
  {
23411
23711
  id: "resolve-element",
@@ -23417,7 +23717,7 @@ placeholder="Name or address\u2026"
23417
23717
  summary: "Resolve an element-or-id reference.",
23418
23718
  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).",
23419
23719
  members: [],
23420
- version: "11.9.0"
23720
+ version: "11.10.0"
23421
23721
  },
23422
23722
  {
23423
23723
  id: "is-toggle-open",
@@ -23429,7 +23729,7 @@ placeholder="Name or address\u2026"
23429
23729
  summary: "True when a native `toggle` event reports the overlay opening.",
23430
23730
  description: "True when a native `toggle` event reports the overlay opening.",
23431
23731
  members: [],
23432
- version: "11.9.0"
23732
+ version: "11.10.0"
23433
23733
  },
23434
23734
  {
23435
23735
  id: "discrete-overlay-transition",
@@ -23441,7 +23741,7 @@ placeholder="Name or address\u2026"
23441
23741
  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.",
23442
23742
  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.",
23443
23743
  members: [],
23444
- version: "11.9.0"
23744
+ version: "11.10.0"
23445
23745
  },
23446
23746
  {
23447
23747
  id: "restore-overlay-focus",
@@ -23453,7 +23753,7 @@ placeholder="Name or address\u2026"
23453
23753
  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).",
23454
23754
  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.",
23455
23755
  members: [],
23456
- version: "11.9.0"
23756
+ version: "11.10.0"
23457
23757
  },
23458
23758
  {
23459
23759
  id: "focusable-elements",
@@ -23465,7 +23765,7 @@ placeholder="Name or address\u2026"
23465
23765
  summary: "The focusable elements inside `root`, in DOM order.",
23466
23766
  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).",
23467
23767
  members: [],
23468
- version: "11.9.0"
23768
+ version: "11.10.0"
23469
23769
  },
23470
23770
  {
23471
23771
  id: "backdrop-dismiss",
@@ -23490,7 +23790,7 @@ placeholder="Name or address\u2026"
23490
23790
  description: "True only when both the press and the click landed on the dialog itself."
23491
23791
  }
23492
23792
  ],
23493
- version: "11.9.0"
23793
+ version: "11.10.0"
23494
23794
  },
23495
23795
  {
23496
23796
  id: "sort-direction",
@@ -23502,7 +23802,7 @@ placeholder="Name or address\u2026"
23502
23802
  summary: "",
23503
23803
  description: "",
23504
23804
  members: [],
23505
- version: "11.9.0"
23805
+ version: "11.10.0"
23506
23806
  },
23507
23807
  {
23508
23808
  id: "row-key",
@@ -23514,7 +23814,7 @@ placeholder="Name or address\u2026"
23514
23814
  summary: "What `rowId` returns: a stable identity for a row across re-fetches.",
23515
23815
  description: "What `rowId` returns: a stable identity for a row across re-fetches.",
23516
23816
  members: [],
23517
- version: "11.9.0"
23817
+ version: "11.10.0"
23518
23818
  },
23519
23819
  {
23520
23820
  id: "uni-datasource-options",
@@ -23533,7 +23833,7 @@ placeholder="Name or address\u2026"
23533
23833
  description: "Stable identity for a row. Unset, rows are compared by reference, which never matches a row rebuilt from a fresh fetch \u2014 a realtime update that replaces the records would empty a selection and move an expanded row. Set it (`(row) => row.id`) and selection, `uni-data-table`'s expanded row and its row tracking all key by it instead."
23534
23834
  }
23535
23835
  ],
23536
- version: "11.9.0"
23836
+ version: "11.10.0"
23537
23837
  },
23538
23838
  {
23539
23839
  id: "sort",
@@ -23558,7 +23858,7 @@ placeholder="Name or address\u2026"
23558
23858
  description: ""
23559
23859
  }
23560
23860
  ],
23561
- version: "11.9.0"
23861
+ version: "11.10.0"
23562
23862
  },
23563
23863
  {
23564
23864
  id: "uni-base-datasource",
@@ -23745,7 +24045,7 @@ placeholder="Name or address\u2026"
23745
24045
  description: ""
23746
24046
  }
23747
24047
  ],
23748
- version: "11.9.0"
24048
+ version: "11.10.0"
23749
24049
  },
23750
24050
  {
23751
24051
  id: "page-request",
@@ -23788,7 +24088,7 @@ placeholder="Name or address\u2026"
23788
24088
  description: ""
23789
24089
  }
23790
24090
  ],
23791
- version: "11.9.0"
24091
+ version: "11.10.0"
23792
24092
  },
23793
24093
  {
23794
24094
  id: "page-response",
@@ -23825,7 +24125,7 @@ placeholder="Name or address\u2026"
23825
24125
  description: ""
23826
24126
  }
23827
24127
  ],
23828
- version: "11.9.0"
24128
+ version: "11.10.0"
23829
24129
  },
23830
24130
  {
23831
24131
  id: "data-loader",
@@ -23837,7 +24137,7 @@ placeholder="Name or address\u2026"
23837
24137
  summary: "",
23838
24138
  description: "",
23839
24139
  members: [],
23840
- version: "11.9.0"
24140
+ version: "11.10.0"
23841
24141
  },
23842
24142
  {
23843
24143
  id: "uni-server-side-datasource",
@@ -23976,7 +24276,7 @@ placeholder="Name or address\u2026"
23976
24276
  description: ""
23977
24277
  }
23978
24278
  ],
23979
- version: "11.9.0"
24279
+ version: "11.10.0"
23980
24280
  },
23981
24281
  {
23982
24282
  id: "uni-datasource",
@@ -23988,7 +24288,7 @@ placeholder="Name or address\u2026"
23988
24288
  summary: "",
23989
24289
  description: "",
23990
24290
  members: [],
23991
- version: "11.9.0"
24291
+ version: "11.10.0"
23992
24292
  },
23993
24293
  {
23994
24294
  id: "uni-record-datasource",
@@ -24097,7 +24397,7 @@ placeholder="Name or address\u2026"
24097
24397
  description: ""
24098
24398
  }
24099
24399
  ],
24100
- version: "11.9.0"
24400
+ version: "11.10.0"
24101
24401
  },
24102
24402
  {
24103
24403
  id: "local-storage-service",
@@ -24152,7 +24452,7 @@ placeholder="Name or address\u2026"
24152
24452
  description: ""
24153
24453
  }
24154
24454
  ],
24155
- version: "11.9.0"
24455
+ version: "11.10.0"
24156
24456
  },
24157
24457
  {
24158
24458
  id: "alert",
@@ -24207,7 +24507,7 @@ placeholder="Name or address\u2026"
24207
24507
  description: ""
24208
24508
  }
24209
24509
  ],
24210
- version: "11.9.0"
24510
+ version: "11.10.0"
24211
24511
  },
24212
24512
  {
24213
24513
  id: "snackbar",
@@ -24262,7 +24562,7 @@ placeholder="Name or address\u2026"
24262
24562
  description: ""
24263
24563
  }
24264
24564
  ],
24265
- version: "11.9.0"
24565
+ version: "11.10.0"
24266
24566
  },
24267
24567
  {
24268
24568
  id: "confirmation",
@@ -24311,7 +24611,7 @@ placeholder="Name or address\u2026"
24311
24611
  description: ""
24312
24612
  }
24313
24613
  ],
24314
- version: "11.9.0"
24614
+ version: "11.10.0"
24315
24615
  },
24316
24616
  {
24317
24617
  id: "notification-service",
@@ -24378,7 +24678,7 @@ placeholder="Name or address\u2026"
24378
24678
  description: ""
24379
24679
  }
24380
24680
  ],
24381
- version: "11.9.0"
24681
+ version: "11.10.0"
24382
24682
  },
24383
24683
  {
24384
24684
  id: "option",
@@ -24415,7 +24715,7 @@ placeholder="Name or address\u2026"
24415
24715
  description: "Visible and announced, but not committable; listbox navigation skips it."
24416
24716
  }
24417
24717
  ],
24418
- version: "11.9.0"
24718
+ version: "11.10.0"
24419
24719
  },
24420
24720
  {
24421
24721
  id: "options",
@@ -24427,7 +24727,7 @@ placeholder="Name or address\u2026"
24427
24727
  summary: "",
24428
24728
  description: "",
24429
24729
  members: [],
24430
- version: "11.9.0"
24730
+ version: "11.10.0"
24431
24731
  },
24432
24732
  {
24433
24733
  id: "use-timer",
@@ -24439,7 +24739,7 @@ placeholder="Name or address\u2026"
24439
24739
  summary: "",
24440
24740
  description: "",
24441
24741
  members: [],
24442
- version: "11.9.0"
24742
+ version: "11.10.0"
24443
24743
  },
24444
24744
  {
24445
24745
  id: "acceptable-file",
@@ -24451,7 +24751,7 @@ placeholder="Name or address\u2026"
24451
24751
  summary: "",
24452
24752
  description: "",
24453
24753
  members: [],
24454
- version: "11.9.0"
24754
+ version: "11.10.0"
24455
24755
  },
24456
24756
  {
24457
24757
  id: "get-file-extension",
@@ -24463,7 +24763,7 @@ placeholder="Name or address\u2026"
24463
24763
  summary: "",
24464
24764
  description: "",
24465
24765
  members: [],
24466
- version: "11.9.0"
24766
+ version: "11.10.0"
24467
24767
  },
24468
24768
  {
24469
24769
  id: "query-permission",
@@ -24475,7 +24775,7 @@ placeholder="Name or address\u2026"
24475
24775
  summary: "The current state of a browser permission.",
24476
24776
  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".',
24477
24777
  members: [],
24478
- version: "11.9.0"
24778
+ version: "11.10.0"
24479
24779
  },
24480
24780
  {
24481
24781
  id: "permission-service",
@@ -24500,7 +24800,7 @@ placeholder="Name or address\u2026"
24500
24800
  description: ""
24501
24801
  }
24502
24802
  ],
24503
- version: "11.9.0"
24803
+ version: "11.10.0"
24504
24804
  },
24505
24805
  {
24506
24806
  id: "permission",
@@ -24512,7 +24812,7 @@ placeholder="Name or address\u2026"
24512
24812
  summary: "",
24513
24813
  description: "",
24514
24814
  members: [],
24515
- version: "11.9.0"
24815
+ version: "11.10.0"
24516
24816
  },
24517
24817
  {
24518
24818
  id: "permission-state",
@@ -24524,7 +24824,7 @@ placeholder="Name or address\u2026"
24524
24824
  summary: "",
24525
24825
  description: "",
24526
24826
  members: [],
24527
- version: "11.9.0"
24827
+ version: "11.10.0"
24528
24828
  },
24529
24829
  {
24530
24830
  id: "clipboard-copy-result",
@@ -24536,7 +24836,7 @@ placeholder="Name or address\u2026"
24536
24836
  summary: "How a copy ended: - `copied` \u2014 the content is on the clipboard.",
24537
24837
  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.",
24538
24838
  members: [],
24539
- version: "11.9.0"
24839
+ version: "11.10.0"
24540
24840
  },
24541
24841
  {
24542
24842
  id: "clipboard-data",
@@ -24548,7 +24848,7 @@ placeholder="Name or address\u2026"
24548
24848
  summary: "One clipboard representation; a promise lets the data arrive after the gesture.",
24549
24849
  description: "One clipboard representation; a promise lets the data arrive after the gesture.",
24550
24850
  members: [],
24551
- version: "11.9.0"
24851
+ version: "11.10.0"
24552
24852
  },
24553
24853
  {
24554
24854
  id: "clipboard-content",
@@ -24560,7 +24860,7 @@ placeholder="Name or address\u2026"
24560
24860
  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 }`.",
24561
24861
  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 }`.",
24562
24862
  members: [],
24563
- version: "11.9.0"
24863
+ version: "11.10.0"
24564
24864
  },
24565
24865
  {
24566
24866
  id: "copy-to-clipboard",
@@ -24572,7 +24872,7 @@ placeholder="Name or address\u2026"
24572
24872
  summary: "Copies text or rich content with the Async Clipboard API.",
24573
24873
  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.",
24574
24874
  members: [],
24575
- version: "11.9.0"
24875
+ version: "11.10.0"
24576
24876
  }
24577
24877
  ],
24578
24878
  utilityDocs: [
@@ -26584,13 +26884,21 @@ var buildComponents = (c) => ({
26584
26884
  }
26585
26885
  },
26586
26886
  card: {
26587
- options: { borderRadius: "xs" },
26887
+ options: {
26888
+ borderRadius: "xs",
26889
+ selectedBorder: "primary",
26890
+ selectedColor: "primary-container"
26891
+ },
26588
26892
  fixed: {
26589
26893
  overflow: "hidden",
26590
26894
  backgroundColor: c.background,
26591
26895
  color: c["on-background"]
26592
26896
  }
26593
26897
  },
26898
+ cardGroup: { options: {
26899
+ gap: "md",
26900
+ templateColumns: "repeat(auto-fit, minmax(160px, 1fr))"
26901
+ } },
26594
26902
  cardHeader: {
26595
26903
  fixed: { padding: "12px 24px" },
26596
26904
  variants: {
@@ -28217,4 +28525,4 @@ export {
28217
28525
  buildStoredTheme,
28218
28526
  createUniServer
28219
28527
  };
28220
- //# sourceMappingURL=chunk-5CI6QESE.js.map
28528
+ //# sourceMappingURL=chunk-G27EXV3Z.js.map