@antadesign/anta 0.3.19 → 0.3.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/anta_helpers.d.ts +2 -2
- package/dist/components/Banner.d.ts +3 -3
- package/dist/components/Button.d.ts +1 -1
- package/dist/components/Calendar.d.ts +11 -12
- package/dist/components/Card.d.ts +1 -1
- package/dist/components/Card.js +1 -1
- package/dist/components/Checkbox.d.ts +8 -9
- package/dist/components/Dialog.d.ts +1 -1
- package/dist/components/Expander.d.ts +5 -6
- package/dist/components/Input.d.ts +2 -2
- package/dist/components/Input.js +1 -1
- package/dist/components/InputAutocomplete.d.ts +8 -8
- package/dist/components/InputTime.d.ts +3 -3
- package/dist/components/InputTime.js +1 -1
- package/dist/components/Menu.d.ts +2 -2
- package/dist/components/MenuItem.d.ts +1 -1
- package/dist/components/MenuItem.js +1 -1
- package/dist/components/Progress.d.ts +1 -1
- package/dist/components/RadioGroup.d.ts +12 -13
- package/dist/components/Select.d.ts +31 -38
- package/dist/components/Select.js +1 -1
- package/dist/components/SelectFaceted.d.ts +27 -33
- package/dist/components/Slider.d.ts +5 -5
- package/dist/components/Switch.d.ts +4 -4
- package/dist/components/Tabs.d.ts +7 -7
- package/dist/components/Title.d.ts +1 -1
- package/dist/components/Toaster.d.ts +1 -1
- package/dist/components/Tooltip.d.ts +1 -1
- package/dist/elements/a-card.css +1 -1
- package/dist/elements/a-dialog.css +1 -1
- package/dist/elements/a-expander.css +1 -1
- package/dist/elements/a-expander.d.ts +1 -0
- package/dist/elements/a-expander.js +12 -2
- package/dist/elements/a-progress.css +1 -1
- package/dist/elements/a-tooltip.css +1 -1
- package/dist/elements/a-tooltip.d.ts +1 -1
- package/dist/elements/a-tooltip.js +1 -1
- package/dist/elements/index.d.ts +1 -1
- package/dist/general_types.d.ts +22 -22
- package/dist/index.d.ts +3 -3
- package/docs/accessibility.md +4 -4
- package/docs/changelog.md +23 -13
- package/docs/comparison.md +1 -1
- package/docs/components/banner.md +17 -17
- package/docs/components/button.md +6 -6
- package/docs/components/card.md +5 -6
- package/docs/components/checkbox.md +17 -18
- package/docs/components/dialog.md +2 -2
- package/docs/components/expander.md +27 -30
- package/docs/components/icon.md +1 -1
- package/docs/components/input-autocomplete.md +15 -16
- package/docs/components/input-date.md +54 -59
- package/docs/components/input-time.md +7 -7
- package/docs/components/input.md +14 -14
- package/docs/components/menu.md +72 -8
- package/docs/components/progress.md +2 -2
- package/docs/components/radio.md +24 -25
- package/docs/components/select-faceted.md +95 -100
- package/docs/components/select.md +110 -115
- package/docs/components/slider.md +15 -10
- package/docs/components/switch.md +13 -13
- package/docs/components/tabs.md +23 -23
- package/docs/components/tag.md +5 -5
- package/docs/components/text.md +4 -4
- package/docs/components/title.md +1 -1
- package/docs/components/toaster.md +4 -4
- package/docs/components/tooltip.md +2 -2
- package/docs/credits.md +0 -4
- package/docs/index.md +1 -1
- package/docs/install-config.md +7 -7
- package/docs/normalization.md +6 -9
- package/docs/overview.md +1 -1
- package/docs/packages/stickers.md +1 -1
- package/package.json +1 -1
package/dist/general_types.d.ts
CHANGED
|
@@ -151,7 +151,7 @@ export interface AProgressAttributes extends BaseAttributes {
|
|
|
151
151
|
value?: number | string | false;
|
|
152
152
|
/** Maximum value. Defaults to 100. */
|
|
153
153
|
max?: number | string;
|
|
154
|
-
/**
|
|
154
|
+
/** Color variant, or any literal CSS color for a custom tone (derived in
|
|
155
155
|
* oklch). Named tones track light/dark automatically. */
|
|
156
156
|
tone?: 'neutral' | 'brand' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
157
157
|
/** Size variant. `medium` is the default. */
|
|
@@ -435,12 +435,12 @@ export interface ATooltipAttributes extends BaseAttributes {
|
|
|
435
435
|
* `@antadesign/anta`.
|
|
436
436
|
*/
|
|
437
437
|
export interface ACheckboxAttributes extends BaseAttributes {
|
|
438
|
-
/** Mark
|
|
438
|
+
/** Mark color in every state — checked fill *and* unselected box border — or any
|
|
439
439
|
* literal CSS color for a one-off custom tone. Named tones track light/dark mode
|
|
440
440
|
* automatically. `'neutral'` is the default (same as omitting it). The label + hint
|
|
441
|
-
* stay neutral —
|
|
441
|
+
* stay neutral — recolor them in plain CSS via the `--text-N-{tone}` tokens. */
|
|
442
442
|
tone?: 'brand' | 'neutral' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
443
|
-
/** Like `tone`, but
|
|
443
|
+
/** Like `tone`, but colored onto the checked mark only — the empty box stays
|
|
444
444
|
* neutral grey. Same value set as `tone`; if both are set, `tone` governs the
|
|
445
445
|
* off-state border and `tone-selected` the checked fill. */
|
|
446
446
|
'tone-selected'?: 'brand' | 'neutral' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
@@ -489,9 +489,9 @@ export interface ACheckboxAttributes extends BaseAttributes {
|
|
|
489
489
|
* wrapper supplies both.
|
|
490
490
|
*/
|
|
491
491
|
export interface ASwitchAttributes extends BaseAttributes {
|
|
492
|
-
/** Track and thumb
|
|
492
|
+
/** Track and thumb color. A tinted tone also colors the unchecked chrome. */
|
|
493
493
|
tone?: 'brand' | 'neutral' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
494
|
-
/** Checked-track-only
|
|
494
|
+
/** Checked-track-only color. The unchecked track and thumb stay neutral. */
|
|
495
495
|
'tone-selected'?: 'brand' | 'neutral' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
496
496
|
/** Size variant. `small` = 26×16px, `medium` (default) = 30×18px, `large` = 34×20px. */
|
|
497
497
|
size?: 'small' | 'medium' | 'large';
|
|
@@ -547,7 +547,7 @@ export interface AInputAttributes extends BaseAttributes {
|
|
|
547
547
|
* wrapper) the glyph. Only `critical` carries validity weight (`aria-invalid`
|
|
548
548
|
* + `:state(invalid)`); the others are advisory. Omit for the neutral field. */
|
|
549
549
|
status?: 'neutral' | 'brand' | 'info' | 'success' | 'warning' | 'critical';
|
|
550
|
-
/** Custom accent
|
|
550
|
+
/** Custom accent color (any literal CSS color) — tints the resting + hover
|
|
551
551
|
* border via an oklch derivation. `status` overrides it for validation. */
|
|
552
552
|
tone?: string;
|
|
553
553
|
/** Disabled state. Presence-based. */
|
|
@@ -614,9 +614,9 @@ export interface ASliderAttributes extends BaseAttributes {
|
|
|
614
614
|
name?: string;
|
|
615
615
|
/** Disables pointer and keyboard interaction. Presence-based. */
|
|
616
616
|
disabled?: boolean | '';
|
|
617
|
-
/**
|
|
617
|
+
/** Color of the filled rail. Named tones or a literal CSS color. */
|
|
618
618
|
tone?: 'neutral' | 'brand' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
619
|
-
/**
|
|
619
|
+
/** Color of the thumb stroke. Named tones or a literal CSS color. */
|
|
620
620
|
'thumb-tone'?: 'neutral' | 'brand' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
621
621
|
/** Size variant. small=24px, medium=28px, large=32px tall. */
|
|
622
622
|
size?: 'small' | 'medium' | 'large';
|
|
@@ -624,7 +624,7 @@ export interface ASliderAttributes extends BaseAttributes {
|
|
|
624
624
|
'track-size'?: string;
|
|
625
625
|
/** Diameter of the thumb as a CSS length, such as `'20px'`. */
|
|
626
626
|
'thumb-size'?: string;
|
|
627
|
-
/** Fill the thumb with its resolved border
|
|
627
|
+
/** Fill the thumb with its resolved border color. Presence-based. */
|
|
628
628
|
'thumb-fill'?: boolean | '';
|
|
629
629
|
/** Fully round the rail and thumb, or set both to a custom radius. */
|
|
630
630
|
round?: boolean | number | string;
|
|
@@ -668,7 +668,7 @@ export interface AInputTimeAttributes extends BaseAttributes {
|
|
|
668
668
|
max?: string;
|
|
669
669
|
/** Validation/feedback tone. Only `critical` carries validity weight. */
|
|
670
670
|
status?: 'neutral' | 'brand' | 'info' | 'success' | 'warning' | 'critical';
|
|
671
|
-
/** Custom accent
|
|
671
|
+
/** Custom accent color (any literal CSS color) — tints the resting + hover
|
|
672
672
|
* border via an oklch derivation; `status` overrides for validation. */
|
|
673
673
|
tone?: string;
|
|
674
674
|
/** Disabled state. Presence-based. */
|
|
@@ -940,12 +940,12 @@ export interface ACopyAttributes extends BaseAttributes {
|
|
|
940
940
|
export interface ARadioAttributes extends BaseAttributes {
|
|
941
941
|
/** This option's identity / submitted value. */
|
|
942
942
|
value?: string;
|
|
943
|
-
/** Mark
|
|
943
|
+
/** Mark color in every state — selected ring fill + dot *and* unselected ring
|
|
944
944
|
* border — or any literal CSS color for a one-off custom tone. Named tones track
|
|
945
945
|
* light/dark mode. `'neutral'` is the default. The label + hint stay neutral —
|
|
946
|
-
*
|
|
946
|
+
* recolor them in plain CSS via the `--text-N-{tone}` tokens. */
|
|
947
947
|
tone?: 'brand' | 'neutral' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
948
|
-
/** Like `tone`, but
|
|
948
|
+
/** Like `tone`, but colored onto the selected mark only — an unselected ring stays
|
|
949
949
|
* neutral grey. Same value set as `tone`; if both are set, `tone` governs the
|
|
950
950
|
* off-state border and `tone-selected` the selected fill. */
|
|
951
951
|
'tone-selected'?: 'brand' | 'neutral' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
@@ -991,17 +991,17 @@ export interface ARadioGroupAttributes extends BaseAttributes {
|
|
|
991
991
|
/** Form field name — the group submits `name=value`. */
|
|
992
992
|
name?: string;
|
|
993
993
|
/** Mark tone cascaded to children that don't set their own, or any literal CSS
|
|
994
|
-
* color for a one-off custom tone.
|
|
995
|
-
* unselected border. The option text stays neutral —
|
|
994
|
+
* color for a one-off custom tone. Colors every child's ring fill + dot *and*
|
|
995
|
+
* unselected border. The option text stays neutral — recolor it in plain CSS via
|
|
996
996
|
* the `--text-N-{tone}` tokens. */
|
|
997
997
|
tone?: 'brand' | 'neutral' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
998
|
-
/** Like `tone`, but
|
|
998
|
+
/** Like `tone`, but colored onto the selected option only — every unselected ring
|
|
999
999
|
* stays neutral grey. Cascaded to children that don't set their own. */
|
|
1000
1000
|
'tone-selected'?: 'brand' | 'neutral' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
1001
1001
|
/** Size cascaded to children that don't set their own. */
|
|
1002
1002
|
size?: 'small' | 'medium' | 'large';
|
|
1003
1003
|
/** Validation/feedback tone for the group hint — same set as `<a-input>`'s
|
|
1004
|
-
* `status`.
|
|
1004
|
+
* `status`. Recolors `<a-radio-group-hint>`; omit for the neutral default. */
|
|
1005
1005
|
status?: 'neutral' | 'brand' | 'info' | 'success' | 'warning' | 'critical';
|
|
1006
1006
|
/** Disable the whole group. Presence-based. */
|
|
1007
1007
|
disabled?: boolean | '';
|
|
@@ -1046,9 +1046,9 @@ export interface ARadioGroupAttributes extends BaseAttributes {
|
|
|
1046
1046
|
export interface ATabAttributes extends BaseAttributes {
|
|
1047
1047
|
/** This tab's identity / the value reported when it's selected. */
|
|
1048
1048
|
value?: string;
|
|
1049
|
-
/** Per-tab tone override (same vocabulary as `<a-tabs tone>`):
|
|
1049
|
+
/** Per-tab tone override (same vocabulary as `<a-tabs tone>`): colors this tab's
|
|
1050
1050
|
* label + icons and, when selected, its indicator. Named tones tone the sliding
|
|
1051
|
-
* indicator too; a custom literal
|
|
1051
|
+
* indicator too; a custom literal color tones the indicator only in `noslide`.
|
|
1052
1052
|
* Custom tones also set `--tabs-tone-source` on the tab (via the wrapper's style). */
|
|
1053
1053
|
tone?: 'neutral' | 'brand' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
|
1054
1054
|
/** Selected state — connect-time seed for the standalone render path (no tablist).
|
|
@@ -1178,7 +1178,7 @@ export interface ACardAttributes extends BaseAttributes {
|
|
|
1178
1178
|
size?: 'small' | 'medium' | 'large';
|
|
1179
1179
|
/** Which edge the full-bleed `media` slot sits on. `top` is the default. */
|
|
1180
1180
|
'media-position'?: 'top' | 'bottom' | 'left' | 'right';
|
|
1181
|
-
/** Selected / chosen state — an inset ring in the tone
|
|
1181
|
+
/** Selected / chosen state — an inset ring in the tone color. Presence-based
|
|
1182
1182
|
* (`''` on, omit off). */
|
|
1183
1183
|
selected?: boolean | '';
|
|
1184
1184
|
/** Loading state — skeleton pulse, `aria-busy`, and (in link mode) navigation is
|
|
@@ -1222,7 +1222,7 @@ export interface ABannerAttributes extends BaseAttributes {
|
|
|
1222
1222
|
* `'closed'` starts it dismissed. */
|
|
1223
1223
|
'default-state'?: 'open' | 'closed';
|
|
1224
1224
|
/** Semantic tone, or any literal CSS color for a one-off custom tone. Named tones
|
|
1225
|
-
* re-point the surface + text + border
|
|
1225
|
+
* re-point the surface + text + border color (used if you opt into a border); a
|
|
1226
1226
|
* custom color keeps its hue with lightness/chroma pinned. `'neutral'` is the
|
|
1227
1227
|
* default (same as omitting it). */
|
|
1228
1228
|
tone?: 'neutral' | 'brand' | 'info' | 'success' | 'warning' | 'critical' | (string & {});
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @antadesign/anta —
|
|
2
|
+
* @antadesign/anta — Anta design system
|
|
3
3
|
*
|
|
4
4
|
* Portable UI components with web component internals and JSX wrappers.
|
|
5
5
|
* Works with React, Preact (via compat or `configure()`), or any custom JSX runtime.
|
|
@@ -43,7 +43,7 @@ export type { SwitchProps, SwitchChangeAttrs } from './components/Switch';
|
|
|
43
43
|
export { Menu } from './components/Menu';
|
|
44
44
|
export type { MenuProps } from './components/Menu';
|
|
45
45
|
export { MenuItem } from './components/MenuItem';
|
|
46
|
-
export type { MenuItemProps } from './components/MenuItem';
|
|
46
|
+
export type { MenuItemProps, MenuItemCommonProps, MenuItemLinkMode, MenuItemActionMode, } from './components/MenuItem';
|
|
47
47
|
export { MenuItemCopy } from './components/MenuItemCopy';
|
|
48
48
|
export type { MenuItemCopyProps } from './components/MenuItemCopy';
|
|
49
49
|
export { MenuSeparator } from './components/MenuSeparator';
|
|
@@ -71,7 +71,7 @@ export type { RadioGroupProps, RadioOption } from './components/RadioGroup';
|
|
|
71
71
|
export { Select, optionsWithSelection } from './components/Select';
|
|
72
72
|
export type { SelectProps, SelectCommonProps, OptionValue, SelectOption, SelectGroup, SelectSubmenu, SelectItem, SelectChangeAttrs, OptionState, TriggerState, EmptyState, SelectionState, SelectedOption, SelectedGroup, SelectedSubmenu, SelectedItem, } from './components/Select';
|
|
73
73
|
export { SelectFaceted } from './components/SelectFaceted';
|
|
74
|
-
export type { SelectFacetedProps, SelectFacet, SelectFacetSingle, SelectFacetMultiple, SelectFacetText, SelectFacetCustom, SelectFacetCustomContext, SelectFacetedValue, SelectFacetedChangeAttrs, SelectFacetedTriggerState, } from './components/SelectFaceted';
|
|
74
|
+
export type { SelectFacetedProps, SelectFacet, SelectFacetSingle, SelectFacetMultiple, SelectFacetText, SelectFacetCustom, SelectFacetCustomContext, FacetFilter, SelectFacetedValue, SelectFacetedChangeAttrs, SelectFacetedTriggerState, } from './components/SelectFaceted';
|
|
75
75
|
export { Tabs } from './components/Tabs';
|
|
76
76
|
export type { TabsProps, TabOption, TabsChangeAttrs } from './components/Tabs';
|
|
77
77
|
export { TabPanel } from './components/TabPanel';
|
package/docs/accessibility.md
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
# Accessibility
|
|
2
2
|
|
|
3
|
-
A few
|
|
3
|
+
A few guidelines for designers and engineers using Anta.
|
|
4
4
|
|
|
5
5
|
## Colors
|
|
6
6
|
|
|
7
|
-
The matrix
|
|
7
|
+
The matrix renders every text level on every background for the selected tone and theme. Each cell shows the WCAG 2 contrast ratio, AA or AAA result for the selected size and weight, and APCA Lc value. The controls change rendering and pass thresholds, not the color-pair ratios. Vision tabs apply SVG-filter and CSS-mask simulations; the numbers use normal-vision math.
|
|
8
8
|
|
|
9
9
|
This table uses the browser's system colors directly. It changes with the active
|
|
10
10
|
forced-colors palette, so it shows the values a component can use in that mode.
|
|
11
11
|
|
|
12
12
|
## Color is not a unique communication channel
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
A color-only message fails when a reader cannot distinguish its color. This includes color blindness, low contrast, low brightness, monochrome printing, glare, and theme changes.
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
`tone` on `Progress`, `Text`, backgrounds, and borders is a secondary signal. Pair it with text and, where useful, a distinct icon shape such as a checkmark or cross.
|
|
17
17
|
|
|
18
18
|
The simulator above makes it easy to check a candidate combination across the most common color-vision deficiencies and a handful of other vision conditions.
|
|
19
19
|
|
package/docs/changelog.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
This page tracks changes that ship in `@antadesign/anta`. Documentation-only
|
|
4
4
|
changes are not listed.
|
|
5
5
|
|
|
6
|
+
## 0.3.20 — August 4, 2026
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
|
|
10
|
+
- Package documentation and source comments use clearer, more concise language.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Expander titles can be selected without toggling the disclosure.
|
|
15
|
+
|
|
6
16
|
## 0.3.19 — August 3, 2026
|
|
7
17
|
|
|
8
18
|
### Added
|
|
@@ -13,7 +23,7 @@ changes are not listed.
|
|
|
13
23
|
### Changed
|
|
14
24
|
|
|
15
25
|
- Native `data-anta` select popups now follow Menu styling for their surface,
|
|
16
|
-
option sizing,
|
|
26
|
+
option sizing, colors, and 1px item spacing when customizable selects are
|
|
17
27
|
supported.
|
|
18
28
|
|
|
19
29
|
### Fixed
|
|
@@ -81,7 +91,7 @@ changes are not listed.
|
|
|
81
91
|
|
|
82
92
|
### Changed
|
|
83
93
|
|
|
84
|
-
- In forced-colors mode, Anta controls and surfaces use system
|
|
94
|
+
- In forced-colors mode, Anta controls and surfaces use system colors and
|
|
85
95
|
visible borders for their interactive, selected, and disabled states,
|
|
86
96
|
including icons, inputs, buttons, tags, choice controls, tabs, Expanders,
|
|
87
97
|
Cards, Dialogs, Banners, Progress, and Tooltips.
|
|
@@ -90,7 +100,7 @@ changes are not listed.
|
|
|
90
100
|
### Fixed
|
|
91
101
|
|
|
92
102
|
- No-icon `ButtonCopy` feedback now keeps a wrapping label's width and line breaks.
|
|
93
|
-
- Native HTML radio labels use Anta's 8px control gap and vertically
|
|
103
|
+
- Native HTML radio labels use Anta's 8px control gap and vertically centered
|
|
94
104
|
alignment.
|
|
95
105
|
- `InputAutocomplete` now commits the highlighted suggestion when users press
|
|
96
106
|
Arrow keys then Enter.
|
|
@@ -133,7 +143,7 @@ changes are not listed.
|
|
|
133
143
|
### Added
|
|
134
144
|
|
|
135
145
|
- Seed tokens for the neutral, brand, info, success, warning, and critical
|
|
136
|
-
|
|
146
|
+
color scales.
|
|
137
147
|
- `theme-anta.css`, an opt-in stylesheet that restores the former palette.
|
|
138
148
|
- Default styling for raw `dfn` elements.
|
|
139
149
|
|
|
@@ -160,7 +170,7 @@ changes are not listed.
|
|
|
160
170
|
|
|
161
171
|
### Breaking
|
|
162
172
|
|
|
163
|
-
- Copy
|
|
173
|
+
- Copy behavior moved from `Button` and `MenuItem` to `a-copy`. Replace
|
|
164
174
|
`<Button copy={value}>` with `<ButtonCopy copy={value}>`, or compose
|
|
165
175
|
`<a-copy>` inside a control.
|
|
166
176
|
|
|
@@ -232,7 +242,7 @@ changes are not listed.
|
|
|
232
242
|
|
|
233
243
|
### Changed
|
|
234
244
|
|
|
235
|
-
- `Text` and `Title` accept custom CSS
|
|
245
|
+
- `Text` and `Title` accept custom CSS colors as `tone` values.
|
|
236
246
|
|
|
237
247
|
### Fixed
|
|
238
248
|
|
|
@@ -315,7 +325,7 @@ changes are not listed.
|
|
|
315
325
|
### Added
|
|
316
326
|
|
|
317
327
|
- `InputDate`, `Calendar`, and `Select`.
|
|
318
|
-
- Searchable Menu combobox
|
|
328
|
+
- Searchable Menu combobox behavior, selectable MenuItem rows, and Menu header
|
|
319
329
|
and footer slots.
|
|
320
330
|
- `round` across core components, `Tabs.options`, `toneSelected` for selection
|
|
321
331
|
controls, `Input type="search"`, and more icon shapes.
|
|
@@ -334,7 +344,7 @@ changes are not listed.
|
|
|
334
344
|
|
|
335
345
|
### Fixed
|
|
336
346
|
|
|
337
|
-
- Menus, Select, and Inputs retain keyboard and focus
|
|
347
|
+
- Menus, Select, and Inputs retain keyboard and focus behavior in iframes,
|
|
338
348
|
flyouts, and grouped rows.
|
|
339
349
|
- Empty tooltips do not open. Buttons keep their configured size with non-text
|
|
340
350
|
content.
|
|
@@ -354,7 +364,7 @@ changes are not listed.
|
|
|
354
364
|
### Changed
|
|
355
365
|
|
|
356
366
|
- Checkbox and RadioGroup `tone` styles their mark. `toneText` controls label
|
|
357
|
-
|
|
367
|
+
color.
|
|
358
368
|
- Components use tabular figures by default. Button exposes `role="button"`.
|
|
359
369
|
|
|
360
370
|
### Fixed
|
|
@@ -413,8 +423,8 @@ changes are not listed.
|
|
|
413
423
|
### Breaking
|
|
414
424
|
|
|
415
425
|
- Rename `list-detail-view` to `list-collapse`.
|
|
416
|
-
- Tooltips are pinned by default. Remove `static`; pass `follow`
|
|
417
|
-
|
|
426
|
+
- Tooltips are pinned by default. Remove `static`; pass `follow` to position a
|
|
427
|
+
tooltip next to the pointer.
|
|
418
428
|
|
|
419
429
|
### Added
|
|
420
430
|
|
|
@@ -495,11 +505,11 @@ changes are not listed.
|
|
|
495
505
|
|
|
496
506
|
- Button defaults to `tone="neutral"`. Pass `tone="brand"` to preserve the
|
|
497
507
|
former default.
|
|
498
|
-
- `tone="custom"` is removed. Pass a CSS
|
|
508
|
+
- `tone="custom"` is removed. Pass a CSS color directly to `tone`.
|
|
499
509
|
|
|
500
510
|
### Changed
|
|
501
511
|
|
|
502
|
-
- Button accepts custom CSS
|
|
512
|
+
- Button accepts custom CSS color tones and holds its width in flex layouts.
|
|
503
513
|
|
|
504
514
|
## 0.1.1-dev.4 — May 6, 2026
|
|
505
515
|
|
package/docs/comparison.md
CHANGED
|
@@ -25,4 +25,4 @@ stable releases in this snapshot.
|
|
|
25
25
|
|
|
26
26
|
Rows group components by job, so Dialog, Modal, and Drawer share one mark.
|
|
27
27
|
Anta covers the common controls but remains narrower than full suites. Base UI
|
|
28
|
-
intentionally focuses on
|
|
28
|
+
intentionally focuses on behavior rather than styled components.
|
|
@@ -14,7 +14,7 @@ same opt-in as `Progress` ([Styling](#styling)).
|
|
|
14
14
|
## Tones
|
|
15
15
|
|
|
16
16
|
Pick a semantic `tone` to tint the surface and text together — and the ✕ adopts the
|
|
17
|
-
same tone (it also sets the border
|
|
17
|
+
same tone (it also sets the border color, used if you opt into a border). The set
|
|
18
18
|
matches `Expander` / `Tag`: `neutral` (the default) plus `brand`, `info`, `success`,
|
|
19
19
|
`warning`, and `critical`. Color comes from the theme tokens, so every tone tracks
|
|
20
20
|
light and dark mode automatically.
|
|
@@ -49,7 +49,7 @@ pass a `number` (px) or a CSS length string for a custom radius.
|
|
|
49
49
|
<Banner round={12} tone="success" message="A custom 12px radius." />
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
## Message
|
|
52
|
+
## Message and content
|
|
53
53
|
|
|
54
54
|
`message` is the leading content — a string (rendered at the banner type scale) or
|
|
55
55
|
any node. `children` sit between the message and the actions, for a chip, a link,
|
|
@@ -150,17 +150,17 @@ result through `dismissed` (below).
|
|
|
150
150
|
|
|
151
151
|
## Controlled vs uncontrolled
|
|
152
152
|
|
|
153
|
-
Dismissal follows Anta's shared **state contract**.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
153
|
+
Dismissal follows Anta's shared **state contract**. For uncontrolled use, pass
|
|
154
|
+
`defaultDismissed`; clicking ✕ then dismisses the banner. For controlled use,
|
|
155
|
+
pass `dismissed` and `onDismiss`. The banner follows `dismissed` and reports a
|
|
156
|
+
dismissal request when ✕ is clicked. Update `dismissed` to accept the request,
|
|
157
|
+
or leave it unchanged to reject it. The wrapper uses booleans, while the element
|
|
158
|
+
uses a `state` string (`closed` means dismissed):
|
|
159
159
|
|
|
160
160
|
| | `<Banner>` (JSX) | `<a-banner>` (element) |
|
|
161
161
|
|---|---|---|
|
|
162
|
-
| **Uncontrolled**
|
|
163
|
-
| **Controlled**
|
|
162
|
+
| **Uncontrolled** | `defaultDismissed` | `default-state="open" \| "closed"` |
|
|
163
|
+
| **Controlled** | `dismissed` + `onDismiss` | `state="open" \| "closed"` + `statechange` |
|
|
164
164
|
| **Change signal** | `onDismiss()`, fired on a dismiss request | `statechange`, a cancelable `CustomEvent<{ next, prev }>` of `'open'` / `'closed'` |
|
|
165
165
|
|
|
166
166
|
Controlling it is how you persist a dismissal (write it to storage) or re-show the
|
|
@@ -195,7 +195,7 @@ through `dismissed` instead.
|
|
|
195
195
|
| `children?` | ReactNode | — | Free content placed BETWEEN the message and the actions. |
|
|
196
196
|
| `closable?` | boolean | true | Whether the trailing ✕ dismiss button is present. `false` removes it — drive
|
|
197
197
|
dismissal yourself (a controlled `dismissed`, or your own control) instead.
|
|
198
|
-
It
|
|
198
|
+
It removes the built-in ✕ without making the banner un-dismissible. |
|
|
199
199
|
| `defaultDismissed?` | boolean | — | Initial dismissed state for the uncontrolled case (read once on mount). |
|
|
200
200
|
| `dismissed?` | boolean | — | Controlled dismissed state. When provided, the consumer owns visibility: the
|
|
201
201
|
banner follows this prop only, and clicking ✕ *requests* dismissal (reject by
|
|
@@ -205,7 +205,7 @@ through `dismissed` instead.
|
|
|
205
205
|
| `message?` | ReactNode | — | Leading message — a string (rendered at the banner type scale) or any node.
|
|
206
206
|
Centered in the bar, followed by `children` and then `actions`. |
|
|
207
207
|
| `onDismiss?` | () => void | — | Fired when the user dismisses the banner (clicks ✕). Uncontrolled, the banner
|
|
208
|
-
hides itself and this
|
|
208
|
+
hides itself and this notifies. Controlled, use it to accept the
|
|
209
209
|
request — set `dismissed` to `true` (or ignore to reject); pair it with
|
|
210
210
|
`dismissed`, or the banner can't be closed. |
|
|
211
211
|
| `role?` | string | 'status' | ARIA role for the strip host. `'status'` (a polite live region, so the notice
|
|
@@ -216,10 +216,10 @@ through `dismissed` instead.
|
|
|
216
216
|
by default. Pass a `number` (px) or a CSS length string for a custom radius. |
|
|
217
217
|
| `tone?` | 'neutral' \| 'brand' \| 'info' \| 'success' \| 'warning' \| 'critical' \| (string & {}) | 'neutral' | Semantic tone, or any literal CSS color (`'#ff1493'`, `'rebeccapurple'`) for
|
|
218
218
|
a one-off custom tone. Named tones re-point the surface, text, and border
|
|
219
|
-
|
|
219
|
+
color (used if you opt into a border); a custom color keeps its hue while
|
|
220
220
|
lightness/chroma are pinned. `'neutral'` (the default) is the same as omitting it. |
|
|
221
221
|
|
|
222
|
-
Use
|
|
222
|
+
Use the web component directly when you are not using React or Preact and a native control does not fit.
|
|
223
223
|
|
|
224
224
|
Slots hold the message, actions, and close control. A close button dispatches
|
|
225
225
|
`dismissrequest` through `data-custom-event`.
|
|
@@ -236,7 +236,7 @@ Slots hold the message, actions, and close control. A close button dispatches
|
|
|
236
236
|
```
|
|
237
237
|
|
|
238
238
|
Reach for the props first: **`tone`** sets the color (any CSS color for a custom
|
|
239
|
-
tone — it derives the surface, text, and border
|
|
239
|
+
tone — it derives the surface, text, and border color in oklch), **`round`** the
|
|
240
240
|
corners. The one knob worth keeping is **`--banner-tone-source`** — the color a
|
|
241
241
|
custom `tone` derives from, so set it to drive the palette from your own variable.
|
|
242
242
|
Everything else is plain CSS on the host: `min-height` for a taller bar, a
|
|
@@ -247,9 +247,9 @@ Everything else is plain CSS on the host: `min-height` for a taller bar, a
|
|
|
247
247
|
```
|
|
248
248
|
|
|
249
249
|
**Add a border.** The banner is borderless by default, but its border style and
|
|
250
|
-
|
|
250
|
+
color are preset at `0` width (the `Progress` reset), so you opt in by setting only
|
|
251
251
|
the **width** — `border-bottom-width` for a rule under the strip, `border-width` for
|
|
252
|
-
a full outline. The
|
|
252
|
+
a full outline. The color is already tone-aware (`--banner-border`), so a toned
|
|
253
253
|
banner's border matches its tone with no extra work.
|
|
254
254
|
|
|
255
255
|
```tsx
|
|
@@ -471,7 +471,7 @@ without taking ownership of `onClick`.
|
|
|
471
471
|
|
|
472
472
|
### Props
|
|
473
473
|
|
|
474
|
-
Use
|
|
474
|
+
Use the web component directly when you are not using React or Preact and a native control does not fit.
|
|
475
475
|
|
|
476
476
|
Set `role="button"` and `tabindex="0"` when authoring `<a-button>` directly.
|
|
477
477
|
|
|
@@ -506,7 +506,7 @@ wrapper sets them for you). A native `<button>` also carries its own default
|
|
|
506
506
|
<button data-anta tone="critical" priority="tertiary">Delete</button>
|
|
507
507
|
```
|
|
508
508
|
|
|
509
|
-
Reach for the props first: **`tone`** sets the
|
|
509
|
+
Reach for the props first: **`tone`** sets the color (any CSS color for a custom
|
|
510
510
|
tone — it derives the whole tone × priority × state curve in oklch), **`priority`**
|
|
511
511
|
the emphasis, **`size`** the dimensions. The focus ring is the global
|
|
512
512
|
[`--focus-ring`](../colors.md#focus-ring).
|
|
@@ -520,7 +520,7 @@ CSS (an un-layered rule beats `@layer anta` without `!important`). Set
|
|
|
520
520
|
`background-color` / `color` **per state**, plus full type control (size,
|
|
521
521
|
line-height, letter-spacing, `font-feature-settings`), padding, radius, even a
|
|
522
522
|
frosted `backdrop-filter` — no need to touch a single token. **`light-dark()`** works
|
|
523
|
-
too (Anta sets `color-scheme` from its theme toggle), so
|
|
523
|
+
too (Anta sets `color-scheme` from its theme toggle), so colors adapt to dark mode
|
|
524
524
|
with no `.dark` selector. The classes below are just for the demos:
|
|
525
525
|
|
|
526
526
|
```css
|
|
@@ -537,14 +537,14 @@ a-button.checkout {
|
|
|
537
537
|
}
|
|
538
538
|
a-button.checkout:hover { background: linear-gradient(140deg, light-dark(#3a3a42, #fff), light-dark(#161618, #cacace)); }
|
|
539
539
|
a-button.checkout:active { background: linear-gradient(140deg, light-dark(#000, #ececf0), light-dark(#1a1a1c, #fff)); }
|
|
540
|
-
a-button.checkout a-button-label { /*
|
|
540
|
+
a-button.checkout a-button-label { /* customized label */
|
|
541
541
|
text-transform: uppercase;
|
|
542
542
|
letter-spacing: 0.14em;
|
|
543
543
|
font-weight: 600;
|
|
544
544
|
}
|
|
545
545
|
|
|
546
546
|
/* Second — liquid glass: frost + translucent tint + a diagonal specular sheen,
|
|
547
|
-
a top/bottom bevel, and a soft lift. Sits on a
|
|
547
|
+
a top/bottom bevel, and a soft lift. Sits on a colorful backdrop so it reads. */
|
|
548
548
|
a-button.glass {
|
|
549
549
|
color: #fff;
|
|
550
550
|
background-color: rgba(255, 255, 255, 0.12);
|
|
@@ -600,4 +600,4 @@ beyond the button so it can rotate behind the label without exposing an edge.
|
|
|
600
600
|
|
|
601
601
|
Don't reach for the resolved `--button-fg` / `--button-bg`: they're recomputed per
|
|
602
602
|
state, so setting one only catches a single state — restyle per state as above, or
|
|
603
|
-
use `tone` for a full custom-
|
|
603
|
+
use `tone` for a full custom-color curve.
|
package/docs/components/card.md
CHANGED
|
@@ -116,10 +116,9 @@ round (`999px`, clamped to the box). Omit it for the default (`--card-radius`, 8
|
|
|
116
116
|
|
|
117
117
|
## Header controls
|
|
118
118
|
|
|
119
|
-
There
|
|
120
|
-
|
|
121
|
-
the
|
|
122
|
-
control sit exactly where you place them.
|
|
119
|
+
There is no dedicated actions slot. To place a control in the top-right of the
|
|
120
|
+
header, pass a layout node as `header`. For example, use a flex row containing
|
|
121
|
+
the title and a "more" button. That layout determines where both items appear.
|
|
123
122
|
|
|
124
123
|
```tsx
|
|
125
124
|
<Card
|
|
@@ -179,7 +178,7 @@ out of it — its text is non-selectable and the whole surface navigates.
|
|
|
179
178
|
href="/docs/ci"
|
|
180
179
|
header={<><Icon shape="book-open" /> CI integration guide</>}
|
|
181
180
|
>
|
|
182
|
-
|
|
181
|
+
Connect your CI pipeline in a few minutes.
|
|
183
182
|
</Card>
|
|
184
183
|
```
|
|
185
184
|
|
|
@@ -254,7 +253,7 @@ it also blocks navigation until the load resolves.
|
|
|
254
253
|
color keeps its hue while lightness/chroma are pinned. `'neutral'` (the
|
|
255
254
|
default) is the same as omitting it. |
|
|
256
255
|
|
|
257
|
-
Use
|
|
256
|
+
Use the web component directly when you are not using React or Preact and a native control does not fit.
|
|
258
257
|
|
|
259
258
|
Slots hold media, header, and footer content. Unslotted content is the card body.
|
|
260
259
|
|
|
@@ -6,7 +6,7 @@ The `Checkbox` wrapper renders an `<a-checkbox>` element that manages its own st
|
|
|
6
6
|
|
|
7
7
|
## Tone
|
|
8
8
|
|
|
9
|
-
`tone`
|
|
9
|
+
`tone` colors the **mark** — the checked-box fill and, for a tinted tone, the
|
|
10
10
|
unselected box border (a light shade of the fill that darkens on hover and active,
|
|
11
11
|
like the neutral border; `neutral` keeps a grey border). The label and hint stay
|
|
12
12
|
neutral. Six named tones (`neutral` default), or pass any CSS color for a custom tone.
|
|
@@ -29,7 +29,7 @@ read as a validation error. Same value set as `tone`.
|
|
|
29
29
|
<Checkbox defaultChecked toneSelected="critical">Checked mark tinted</Checkbox>
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
##
|
|
32
|
+
## Coloring the text
|
|
33
33
|
|
|
34
34
|
There's no text-tone prop. To tint the **label**, set `color` on the checkbox with a
|
|
35
35
|
theme-aware `--text-N-{tone}` token (the label inherits it); for the **hint**, add a
|
|
@@ -38,7 +38,7 @@ to tint the whole control.
|
|
|
38
38
|
|
|
39
39
|
```css
|
|
40
40
|
/* Mark via the prop, text via a plain color rule — the label inherits the host
|
|
41
|
-
|
|
41
|
+
color, the hint is targeted directly. The class is just for the demo — swap
|
|
42
42
|
your own selector. */
|
|
43
43
|
a-checkbox.toned-text { color: var(--text-1-critical); }
|
|
44
44
|
a-checkbox.toned-text a-checkbox-hint { color: var(--text-3-critical); }
|
|
@@ -56,7 +56,7 @@ Three sizes scale the box **and** the label + hint type together: `small`
|
|
|
56
56
|
<Checkbox defaultChecked size="large">Large</Checkbox>
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
## Label
|
|
59
|
+
## Label and hint
|
|
60
60
|
|
|
61
61
|
Pass the label as `children` or the `label` prop. Add a `hint` for a secondary line beneath. For a label-less checkbox (e.g. a table "select all"), pass `aria-label`.
|
|
62
62
|
|
|
@@ -177,7 +177,7 @@ Space toggles the checkbox. Follows the [WAI-ARIA checkbox pattern](https://www.
|
|
|
177
177
|
uncontrolled checkbox. `'indeterminate'` shows the minus glyph and takes
|
|
178
178
|
visual precedence; clicking it requests `true`. |
|
|
179
179
|
| `defaultChecked?` | CheckboxValue | false | Initial checked state for an uncontrolled checkbox. Read once; later
|
|
180
|
-
changes ignored
|
|
180
|
+
changes are ignored and the element updates its state after interaction. |
|
|
181
181
|
| `disabled?` | boolean | — | Disable the checkbox (no interaction, dropped from the tab order). |
|
|
182
182
|
| `hint?` | ReactNode | — | Secondary text rendered under the label — explanatory copy, like
|
|
183
183
|
Input's hint. Not part of the accessible name. |
|
|
@@ -196,25 +196,24 @@ Space toggles the checkbox. Follows the [WAI-ARIA checkbox pattern](https://www.
|
|
|
196
196
|
`detail` carries `{ next, prev }`. In controlled mode the element never
|
|
197
197
|
self-applies — answer by updating `checked`, reject by doing nothing. |
|
|
198
198
|
| `onValueChange?` | (event, attrs) => void | — | Like `onChange`, but with a `{ checked, indeterminate, name, value }` snapshot
|
|
199
|
-
as the
|
|
200
|
-
(mirrors `Input`'s `onValueChange`). |
|
|
199
|
+
as the second argument, matching `Input`'s `onValueChange`. |
|
|
201
200
|
| `round?` | boolean \| number \| string | — | Round the checkbox mark to a circle (`border-radius: 999px` on the box). Pass
|
|
202
201
|
a `number` (px) or a CSS length string for a rounded-square mark instead. |
|
|
203
202
|
| `size?` | 'small' \| 'medium' \| 'large' | 'medium' | Size variant. small=14px, medium=16px, large=18px box. |
|
|
204
|
-
| `tone?` | 'brand' \| 'neutral' \| 'info' \| 'success' \| 'warning' \| 'critical' \| (string & {}) | 'neutral' |
|
|
203
|
+
| `tone?` | 'brand' \| 'neutral' \| 'info' \| 'success' \| 'warning' \| 'critical' \| (string & {}) | 'neutral' | Color of the **mark** in every state — the checked-box fill *and* the
|
|
205
204
|
unselected box border. A named tone or any literal CSS color (`'#ff1493'`,
|
|
206
205
|
`'rebeccapurple'`) for a one-off custom tone. Named tones track light/dark mode
|
|
207
|
-
automatically; a custom
|
|
206
|
+
automatically; a custom color keeps its hue + chroma and pins lightness to the
|
|
208
207
|
fill curve. Use `toneSelected` instead to tone only the checked mark and leave
|
|
209
|
-
the empty box neutral. The label + hint stay neutral —
|
|
208
|
+
the empty box neutral. The label + hint stay neutral — recolor them in plain
|
|
210
209
|
CSS via the theme-aware `--text-N-{tone}` tokens. |
|
|
211
|
-
| `toneSelected?` | 'brand' \| 'neutral' \| 'info' \| 'success' \| 'warning' \| 'critical' \| (string & {}) | 'neutral' | Like `tone`, but
|
|
210
|
+
| `toneSelected?` | 'brand' \| 'neutral' \| 'info' \| 'success' \| 'warning' \| 'critical' \| (string & {}) | 'neutral' | Like `tone`, but colored onto the **checked mark only** — the empty box stays
|
|
212
211
|
neutral grey until it's checked. Prefer this over `tone` when a resting tinted
|
|
213
212
|
border would read as a validation state. Same value set as `tone`; if both are
|
|
214
213
|
set, `tone` governs the off-state border and `toneSelected` the checked fill. |
|
|
215
214
|
| `value?` | string | "on" | Value submitted with the form when checked — like a native checkbox. |
|
|
216
215
|
|
|
217
|
-
Use
|
|
216
|
+
Use the web component directly when you are not using React or Preact and a native control does not fit.
|
|
218
217
|
|
|
219
218
|
The focusable host carries the state. Label and hint are light-DOM children.
|
|
220
219
|
|
|
@@ -242,8 +241,8 @@ treatments.
|
|
|
242
241
|
</div>
|
|
243
242
|
```
|
|
244
243
|
|
|
245
|
-
Reach for the props first: **`tone`**
|
|
246
|
-
**`toneSelected`** only the checked mark (any CSS
|
|
244
|
+
Reach for the props first: **`tone`** colors the mark in every state,
|
|
245
|
+
**`toneSelected`** only the checked mark (any CSS color for a custom tone — it
|
|
247
246
|
derives the full rest/hover/active curve in oklch), **`size`** the dimensions + type.
|
|
248
247
|
To tint the label + hint, add a `color` rule (on the host for the label, on
|
|
249
248
|
`a-checkbox-hint` for the hint) with the `--text-N-{tone}` tokens — there's no
|
|
@@ -251,7 +250,7 @@ text-tone prop. The focus ring is the global
|
|
|
251
250
|
[`--focus-ring`](../colors.md#focus-ring).
|
|
252
251
|
|
|
253
252
|
```tsx
|
|
254
|
-
<Checkbox tone="#e0457b" defaultChecked>Custom
|
|
253
|
+
<Checkbox tone="#e0457b" defaultChecked>Custom color</Checkbox>
|
|
255
254
|
```
|
|
256
255
|
|
|
257
256
|
For anything else, `<a-checkbox>` is light-DOM — the **box is `::before`**, the
|
|
@@ -262,7 +261,7 @@ without `!important`). The classes below are just for the demos:
|
|
|
262
261
|
|
|
263
262
|
```css
|
|
264
263
|
/* Outlined — an unfilled box: the checked box keeps its background and paints the
|
|
265
|
-
border + checkmark in the tone
|
|
264
|
+
border + checkmark in the tone color (light-dark() tunes both themes at once). */
|
|
266
265
|
a-checkbox.outlined:state(checked)::before {
|
|
267
266
|
background: var(--checkbox-bg);
|
|
268
267
|
border-color: light-dark(#5f4bc3, #7460d7);
|
|
@@ -272,7 +271,7 @@ a-checkbox.outlined:state(checked)::after {
|
|
|
272
271
|
}
|
|
273
272
|
|
|
274
273
|
/* Customized — bold label, bigger circular box, bigger checkmark.
|
|
275
|
-
|
|
274
|
+
Colors use light-dark() so they're tuned for both themes at once. */
|
|
276
275
|
a-checkbox.customized { font-weight: 700; }
|
|
277
276
|
a-checkbox.customized::before,
|
|
278
277
|
a-checkbox.customized::after { inline-size: 24px; block-size: 24px; margin-block-start: -2px; }
|
|
@@ -284,7 +283,7 @@ a-checkbox.customized:state(checked)::before {
|
|
|
284
283
|
}
|
|
285
284
|
|
|
286
285
|
/* Beautified — a full white heart mark swapped in via --checkbox-mask-check
|
|
287
|
-
(
|
|
286
|
+
(centered by the default mask-position), sized down a touch, on a pink fill */
|
|
288
287
|
a-checkbox.beautified {
|
|
289
288
|
--checkbox-mask-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54z'/%3E%3C/svg%3E");
|
|
290
289
|
}
|