@antadesign/anta 0.3.33 → 0.3.35

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.
Files changed (205) hide show
  1. package/LICENSE.md +14 -1
  2. package/README.md +9 -0
  3. package/dist/anta_helpers.d.ts +46 -30
  4. package/dist/anta_helpers.js +66 -25
  5. package/dist/bundle.css +1 -1
  6. package/dist/bundle.js +2 -1353
  7. package/dist/components/Banner.d.ts +25 -40
  8. package/dist/components/Banner.js +15 -17
  9. package/dist/components/Breadcrumbs.d.ts +0 -1
  10. package/dist/components/Breadcrumbs.js +0 -1
  11. package/dist/components/Button.d.ts +2 -3
  12. package/dist/components/Button.js +1 -0
  13. package/dist/components/ButtonCopy.js +3 -2
  14. package/dist/components/Calendar.js +13 -13
  15. package/dist/components/Card.d.ts +9 -17
  16. package/dist/components/Card.js +50 -46
  17. package/dist/components/Dialog.d.ts +1 -0
  18. package/dist/components/Dialog.js +16 -10
  19. package/dist/components/Expander.d.ts +6 -21
  20. package/dist/components/Expander.js +24 -23
  21. package/dist/components/Icon.d.ts +8 -14
  22. package/dist/components/Input.d.ts +77 -96
  23. package/dist/components/Input.js +23 -27
  24. package/dist/components/InputAutocomplete.d.ts +29 -10
  25. package/dist/components/InputAutocomplete.js +25 -8
  26. package/dist/components/InputDate.d.ts +0 -1
  27. package/dist/components/InputDate.js +2 -3
  28. package/dist/components/InputTime.d.ts +10 -4
  29. package/dist/components/InputTime.js +20 -16
  30. package/dist/components/Loader.d.ts +2 -2
  31. package/dist/components/Menu.d.ts +5 -4
  32. package/dist/components/Menu.js +13 -8
  33. package/dist/components/MenuItem.js +1 -14
  34. package/dist/components/MenuItemCopy.js +2 -2
  35. package/dist/components/Panel.d.ts +3 -1
  36. package/dist/components/Panel.js +17 -11
  37. package/dist/components/Progress.d.ts +21 -23
  38. package/dist/components/Progress.js +13 -9
  39. package/dist/components/RadioGroup.js +6 -8
  40. package/dist/components/{select-parts.css → Select.css} +1 -1
  41. package/dist/components/Select.d.ts +53 -36
  42. package/dist/components/Select.js +53 -98
  43. package/dist/components/SelectFaceted.d.ts +7 -4
  44. package/dist/components/SelectFaceted.js +21 -10
  45. package/dist/components/Slider.d.ts +28 -11
  46. package/dist/components/Slider.js +20 -20
  47. package/dist/components/Steps.css +1 -1
  48. package/dist/components/Steps.d.ts +0 -1
  49. package/dist/components/Steps.js +1 -12
  50. package/dist/components/Tabs.d.ts +17 -20
  51. package/dist/components/Tabs.js +7 -9
  52. package/dist/components/Text.d.ts +55 -36
  53. package/dist/components/Text.js +35 -22
  54. package/dist/components/Title.d.ts +19 -27
  55. package/dist/components/Title.js +2 -1
  56. package/dist/components/Toaster.js +9 -2
  57. package/dist/components/Tooltip.d.ts +10 -15
  58. package/dist/components/copy-props.d.ts +14 -3
  59. package/dist/components/copy-props.js +14 -3
  60. package/dist/components/select-tree.d.ts +24 -0
  61. package/dist/components/select-tree.js +35 -0
  62. package/dist/element-base.d.ts +10 -0
  63. package/dist/element-base.js +15 -0
  64. package/dist/elements/a-avatar.css +1 -1
  65. package/dist/elements/a-avatar.js +2 -28
  66. package/dist/elements/a-banner.css +1 -1
  67. package/dist/elements/a-banner.d.ts +4 -1
  68. package/dist/elements/a-banner.js +22 -112
  69. package/dist/elements/a-breadcrumbs.d.ts +1 -0
  70. package/dist/elements/a-breadcrumbs.js +1 -0
  71. package/dist/elements/a-button.css +1 -1
  72. package/dist/elements/a-button.d.ts +10 -7
  73. package/dist/elements/a-button.js +18 -1
  74. package/dist/elements/a-calendar.d.ts +14 -13
  75. package/dist/elements/a-calendar.js +29 -24
  76. package/dist/elements/a-card.css +1 -1
  77. package/dist/elements/a-card.d.ts +0 -9
  78. package/dist/elements/a-card.js +0 -184
  79. package/dist/elements/a-checkbox.css +1 -1
  80. package/dist/elements/a-copy.css +1 -1
  81. package/dist/elements/a-copy.d.ts +1 -5
  82. package/dist/elements/a-copy.js +129 -108
  83. package/dist/elements/a-dialog.css +1 -1
  84. package/dist/elements/a-dialog.d.ts +1 -1
  85. package/dist/elements/a-dialog.js +68 -194
  86. package/dist/elements/a-expander.css +1 -1
  87. package/dist/elements/a-expander.d.ts +4 -30
  88. package/dist/elements/a-expander.js +85 -344
  89. package/dist/elements/a-icon.d.ts +5 -23
  90. package/dist/elements/a-icon.js +1 -2
  91. package/dist/elements/a-input-date.d.ts +1 -0
  92. package/dist/elements/a-input-date.js +1 -0
  93. package/dist/elements/a-input-time.css +1 -1
  94. package/dist/elements/a-input-time.d.ts +2 -1
  95. package/dist/elements/a-input-time.js +101 -168
  96. package/dist/elements/a-input.css +1 -1
  97. package/dist/elements/a-input.d.ts +10 -8
  98. package/dist/elements/a-input.js +155 -230
  99. package/dist/elements/a-loader.d.ts +5 -8
  100. package/dist/elements/a-loader.js +1 -2
  101. package/dist/elements/a-menu-item.css +1 -1
  102. package/dist/elements/a-menu-item.d.ts +5 -3
  103. package/dist/elements/a-menu-item.js +5 -1
  104. package/dist/elements/a-menu.css +1 -1
  105. package/dist/elements/a-menu.d.ts +5 -7
  106. package/dist/elements/a-menu.js +383 -299
  107. package/dist/elements/a-panel.css +1 -1
  108. package/dist/elements/a-panel.js +19 -37
  109. package/dist/elements/a-progress.css +1 -1
  110. package/dist/elements/a-progress.d.ts +0 -22
  111. package/dist/elements/a-progress.js +0 -100
  112. package/dist/elements/a-radio-group.d.ts +1 -1
  113. package/dist/elements/a-radio-group.js +6 -4
  114. package/dist/elements/a-select-faceted.d.ts +1 -0
  115. package/dist/elements/a-select-faceted.js +1 -0
  116. package/dist/elements/a-select.d.ts +1 -0
  117. package/dist/elements/a-select.js +1 -0
  118. package/dist/elements/a-slider.css +1 -1
  119. package/dist/elements/a-slider.d.ts +11 -3
  120. package/dist/elements/a-slider.js +244 -242
  121. package/dist/elements/a-steps.d.ts +1 -0
  122. package/dist/elements/a-steps.js +1 -0
  123. package/dist/elements/a-switch.css +1 -1
  124. package/dist/elements/a-tab.css +1 -1
  125. package/dist/elements/a-tabpanel.d.ts +2 -2
  126. package/dist/elements/a-tabpanel.js +13 -3
  127. package/dist/elements/a-tabs.css +1 -1
  128. package/dist/elements/a-tabs.d.ts +1 -1
  129. package/dist/elements/a-tabs.js +6 -4
  130. package/dist/elements/a-tag.css +1 -1
  131. package/dist/elements/a-tag.d.ts +1 -0
  132. package/dist/elements/a-tag.js +1 -0
  133. package/dist/elements/a-text.css +1 -1
  134. package/dist/elements/a-text.d.ts +6 -43
  135. package/dist/elements/a-text.js +110 -193
  136. package/dist/elements/a-title.css +1 -1
  137. package/dist/elements/a-title.d.ts +1 -0
  138. package/dist/elements/a-title.js +1 -0
  139. package/dist/elements/a-toast.css +1 -1
  140. package/dist/elements/a-toast.d.ts +10 -45
  141. package/dist/elements/a-toast.js +80 -66
  142. package/dist/elements/a-toaster.css +1 -1
  143. package/dist/elements/a-toaster.js +9 -44
  144. package/dist/elements/a-tooltip.css +1 -1
  145. package/dist/elements/a-tooltip.d.ts +1 -1
  146. package/dist/elements/a-tooltip.js +142 -136
  147. package/dist/elements/copy-behavior.d.ts +1 -1
  148. package/dist/elements/copy-behavior.js +21 -21
  149. package/dist/elements/index.d.ts +9 -3
  150. package/dist/elements/index.js +6 -6
  151. package/dist/elements/input-focus-modality.d.ts +15 -0
  152. package/dist/elements/input-focus-modality.js +44 -0
  153. package/dist/elements/input-trailing-actions.d.ts +5 -0
  154. package/dist/elements/input-trailing-actions.js +38 -0
  155. package/dist/elements/shadow-aria.d.ts +2 -0
  156. package/dist/elements/shadow-aria.js +2 -1
  157. package/dist/elements/value-input.d.ts +3 -0
  158. package/dist/elements/value-input.js +12 -0
  159. package/dist/general_types.d.ts +103 -96
  160. package/dist/index.d.ts +1 -1
  161. package/dist/input-events.d.ts +4 -0
  162. package/dist/input-events.js +15 -0
  163. package/dist/jsx-runtime.d.ts +70 -23
  164. package/dist/jsx-runtime.js +26 -19
  165. package/dist/native-event-props.d.ts +2 -0
  166. package/dist/native-event-props.js +10 -0
  167. package/dist/reset.css +1 -1
  168. package/dist/theme-antithesis.css +10 -1
  169. package/dist/theme-antune.css +1 -1
  170. package/docs/accessibility.md +17 -3
  171. package/docs/changelog.md +384 -2
  172. package/docs/comparison.md +2 -2
  173. package/docs/components/avatar.md +5 -0
  174. package/docs/components/banner.md +117 -187
  175. package/docs/components/breadcrumbs.md +9 -6
  176. package/docs/components/button.md +22 -0
  177. package/docs/components/card.md +74 -28
  178. package/docs/components/checkbox.md +9 -10
  179. package/docs/components/dialog.md +83 -32
  180. package/docs/components/expander.md +198 -435
  181. package/docs/components/icon.md +11 -17
  182. package/docs/components/input-autocomplete.md +152 -52
  183. package/docs/components/input-date.md +175 -148
  184. package/docs/components/input-time.md +81 -38
  185. package/docs/components/input.md +343 -349
  186. package/docs/components/loader.md +2 -1
  187. package/docs/components/menu.md +35 -6
  188. package/docs/components/panel.md +18 -0
  189. package/docs/components/progress.md +83 -49
  190. package/docs/components/radio.md +39 -43
  191. package/docs/components/select-faceted.md +54 -7
  192. package/docs/components/select.md +390 -386
  193. package/docs/components/slider.md +136 -19
  194. package/docs/components/steps.md +6 -3
  195. package/docs/components/switch.md +8 -9
  196. package/docs/components/tabs.md +110 -104
  197. package/docs/components/text.md +110 -86
  198. package/docs/components/title.md +47 -33
  199. package/docs/components/toaster.md +242 -84
  200. package/docs/components/tooltip.md +204 -113
  201. package/docs/install-config.md +461 -96
  202. package/docs/packages/plot.md +228 -143
  203. package/docs/theming.md +29 -13
  204. package/package.json +43 -4
  205. package/theme-antithesis-license.md +66 -0
@@ -1,5 +1,8 @@
1
+ import { CLEAR_TRIGGER, CLEAR_CLICK_EVENT, CLEAR_INPUT_EVENT, ownsInputClearRequest } from "../input-events";
2
+ import { inputTrailingActions } from "./input-trailing-actions";
1
3
  import { HTMLElementBase, isModifiedNavigationKey } from "../anta_helpers";
2
4
  import { applyShadowAria, ariaAttributeProperty } from "./shadow-aria";
5
+ import { MODALITY, trackFocusModality } from "./input-focus-modality";
3
6
  import "./a-input-time.css";
4
7
  const INPUT_TIME_ARIA = [
5
8
  "aria-label",
@@ -12,8 +15,6 @@ const INPUT_TIME_ARIA = [
12
15
  const INPUT_TIME_ARIA_SET = new Set(INPUT_TIME_ARIA);
13
16
  const READ_DELEGATED_ARIA = /* @__PURE__ */ Symbol("readDelegatedAria");
14
17
  const WRITE_DELEGATED_ARIA = /* @__PURE__ */ Symbol("writeDelegatedAria");
15
- const CLEAR_TRIGGER = "clearrequest";
16
- const CLEAR_INPUT_EVENT = "clearinput";
17
18
  const pad2 = (n) => String(n).padStart(2, "0");
18
19
  const inputColumns = (value) => Array.from(value).reduce((columns, char) => columns + (/[ᄀ-ᅟ⺀-꓏가-힣豈-﫿︐-﹯!-⦆¢-₩]/u.test(char) ? 2 : 1), 0);
19
20
  const to24 = (h12, period) => period === "pm" ? h12 % 12 + 12 : h12 % 12;
@@ -21,148 +22,8 @@ const parseTime = (value) => {
21
22
  const match = /^(\d{1,2}):(\d{2})$/.exec((value ?? "").trim());
22
23
  return match ? { h: Math.min(23, Number(match[1])), min: Math.min(59, Number(match[2])) } : null;
23
24
  };
24
- const SHADOW_STYLE = `
25
- :host {
26
- display: grid;
27
- grid-template-columns: minmax(0, 1fr);
28
- row-gap: 4px;
29
- outline: none;
30
- }
31
-
32
- .label {
33
- display: none;
34
- color: var(--input-time-label);
35
- font-family: var(--sans-serif);
36
- font-size: var(--input-time-font-size);
37
- line-height: var(--input-time-line-height);
38
- font-weight: 500;
39
- }
40
-
41
- .field {
42
- --_bc: var(--input-time-border);
43
- --_bw: 0.5px;
44
-
45
- display: flex;
46
- align-items: center;
47
- box-sizing: border-box;
48
- min-height: var(--input-time-field-height);
49
- background: var(--input-time-bg);
50
- border-radius: var(--input-time-field-radius);
51
- box-shadow: inset 0 0 0 var(--_bw) var(--_bc);
52
- transition: box-shadow 120ms ease;
53
- }
54
- :host([status]:not([status="neutral"])) .field { --_bw: 1px; }
55
-
56
- @media (hover: hover) and (pointer: fine) {
57
- :host(:not(:disabled)) .field:hover {
58
- --_bc: var(--input-time-border-hover);
59
- --_bw: 1px;
60
- }
61
- }
62
- .field:focus-within {
63
- --_bc: var(--input-time-border-hover);
64
- --_bw: 1px;
65
- outline: 1px solid var(--focus-ring);
66
- outline-offset: 1px;
67
- }
68
- @media (forced-colors: active) { .field { border: 1px solid ButtonBorder; } }
69
-
70
- slot[name="leading"] {
71
- display: none;
72
- color: var(--input-time-adornment);
73
- font-size: var(--input-time-font-size);
74
- line-height: var(--input-time-line-height);
75
- }
76
- :host([dim-actions]) slot[name="leading"] { opacity: 0.6; transition: opacity 120ms ease; }
77
- :host([dim-actions]:not(:disabled)) .field:hover slot[name="leading"],
78
- :host([dim-actions]:not(:disabled)) .field:focus-within slot[name="leading"] { opacity: 1; }
79
- :host(:disabled) slot[name="leading"] { opacity: 0.5; pointer-events: none; }
80
-
81
- .segments {
82
- display: flex;
83
- align-items: center;
84
- flex: 1 1 auto;
85
- min-width: 0;
86
- padding-inline: 7px;
87
- color: var(--input-time-text);
88
- font-family: var(--sans-serif);
89
- font-stretch: normal;
90
- font-style: normal;
91
- font-size: var(--input-time-font-size);
92
- line-height: var(--input-time-line-height);
93
- font-weight: 400;
94
- }
95
-
96
- .seg {
97
- appearance: none;
98
- display: inline-block;
99
- box-sizing: border-box;
100
- min-width: 0;
101
- padding-inline: 1px;
102
- border: 0;
103
- border-radius: 2px;
104
- background: transparent;
105
- color: inherit;
106
- font: inherit;
107
- font-variation-settings: inherit;
108
- font-stretch: inherit;
109
- font-style: inherit;
110
- line-height: inherit;
111
- text-align: center;
112
- white-space: nowrap;
113
- outline: none;
114
- cursor: text;
115
- font-variant-numeric: tabular-nums;
116
- }
117
- .seg--period {
118
- field-sizing: content;
119
- width: auto;
120
- color: var(--input-time-period-color);
121
- }
122
- .seg::placeholder {
123
- color: var(--input-time-placeholder);
124
- opacity: 1;
125
- }
126
- .lit {
127
- margin-inline: -1px;
128
- white-space: pre;
129
- color: var(--input-time-text);
130
- }
131
-
132
- :host(:disabled) .segments { cursor: not-allowed; }
133
- :host(:disabled) .seg { cursor: not-allowed; }
134
-
135
- slot[name="trailing"] { display: none; }
136
- :host([dim-actions]) slot[name="trailing"],
137
- :host([dim-actions]) slot[name="clear"] { opacity: 0.6; transition: opacity 120ms ease; }
138
- :host([dim-actions]:not(:disabled)) .field:hover slot[name="trailing"],
139
- :host([dim-actions]:not(:disabled)) .field:hover slot[name="clear"],
140
- :host([dim-actions]:not(:disabled)) .field:focus-within slot[name="trailing"],
141
- :host([dim-actions]:not(:disabled)) .field:focus-within slot[name="clear"] { opacity: 1; }
142
-
143
- slot[name="clear"] {
144
- display: flex;
145
- align-items: center;
146
- flex-shrink: 0;
147
- visibility: hidden;
148
- }
149
- :host(:state(filled):not(:disabled)) slot[name="clear"] { visibility: visible; }
150
-
151
- .hint {
152
- display: none;
153
- gap: 4px;
154
- align-items: flex-start;
155
- padding-inline-start: 1px;
156
- color: var(--input-time-hint);
157
- font-family: var(--sans-serif);
158
- font-size: calc(var(--input-time-font-size) - 1px);
159
- line-height: calc(var(--input-time-line-height) - 2px);
160
- }
161
- `;
162
25
  const INPUT_TIME_TEMPLATE = typeof document === "undefined" ? void 0 : (() => {
163
26
  const template = document.createElement("template");
164
- const style = document.createElement("style");
165
- style.textContent = SHADOW_STYLE;
166
27
  const label = document.createElement("slot");
167
28
  label.className = "label";
168
29
  label.part.add("label");
@@ -188,7 +49,7 @@ const INPUT_TIME_TEMPLATE = typeof document === "undefined" ? void 0 : (() => {
188
49
  hint.className = "hint";
189
50
  hint.part.add("hint");
190
51
  hint.name = "hint";
191
- template.content.append(style, label, field, document.createElement("slot"), hint);
52
+ template.content.append(label, field, document.createElement("slot"), hint);
192
53
  return template;
193
54
  })();
194
55
  class AInputTimeElement extends HTMLElementBase {
@@ -200,6 +61,7 @@ class AInputTimeElement extends HTMLElementBase {
200
61
  "hour12",
201
62
  "status",
202
63
  "disabled",
64
+ "readonly",
203
65
  "min",
204
66
  "max",
205
67
  "required",
@@ -210,6 +72,9 @@ class AInputTimeElement extends HTMLElementBase {
210
72
  #labelSlot;
211
73
  #hintSlot;
212
74
  #segRow;
75
+ #trailingSlot;
76
+ #trailingActions;
77
+ #releaseModality;
213
78
  #ready = false;
214
79
  #formDisabled = false;
215
80
  // True once a value arrived via the `value` property setter — so connect
@@ -232,6 +97,7 @@ class AInputTimeElement extends HTMLElementBase {
232
97
  // Pointer-focused inputs keep the browser's caret placement. Keyboard focus
233
98
  // selects the segment so a new value can be typed immediately.
234
99
  #pointerSegment;
100
+ #editedSinceChange = false;
235
101
  constructor() {
236
102
  super();
237
103
  try {
@@ -249,27 +115,56 @@ class AInputTimeElement extends HTMLElementBase {
249
115
  this.#hintSlot.addEventListener("slotchange", this.#onHintSlotChange);
250
116
  this.#field = shadow.querySelector(".field");
251
117
  this.#segRow = shadow.querySelector(".segments");
118
+ this.#trailingSlot = shadow.querySelector("slot[name=trailing]");
119
+ this.#trailingActions = inputTrailingActions(this, this.#trailingSlot, "a-input-time-trailing", (actions) => {
120
+ this.#internals?.states?.[actions ? "add" : "delete"]("trailing-actions");
121
+ });
122
+ this.#trailingSlot.addEventListener("slotchange", this.#trailingActions.sync);
252
123
  this.#field.addEventListener("mousedown", this.#onFieldMouseDown);
124
+ this.#field.addEventListener("mouseup", this.#resetPointerSegment);
253
125
  this.#segRow.addEventListener("input", this.#onInput);
254
126
  this.#segRow.addEventListener("keydown", this.#onKeyDown);
255
127
  this.#segRow.addEventListener("focusin", this.#onFocusIn);
256
128
  this.#segRow.addEventListener("focusout", this.#onFocusOut);
257
129
  this.#segRow.addEventListener("paste", this.#onPaste);
258
- this.addEventListener(CLEAR_TRIGGER, () => this.clear());
130
+ this.addEventListener(CLEAR_TRIGGER, (event) => {
131
+ if (!ownsInputClearRequest(this, event) || this.#disabled || this.hasAttribute("readonly")) return;
132
+ if (this.dispatchEvent(new CustomEvent(CLEAR_CLICK_EVENT, { bubbles: true, cancelable: true }))) this.clear();
133
+ });
259
134
  }
260
135
  getAnchorRect() {
261
136
  return this.#field.getBoundingClientRect();
262
137
  }
263
138
  connectedCallback() {
139
+ this.#releaseModality?.();
140
+ this.#releaseModality = trackFocusModality(this.doc, this.#syncFocus);
141
+ if (Object.prototype.hasOwnProperty.call(this, "name")) {
142
+ const name = this.name;
143
+ delete this.name;
144
+ this.name = name;
145
+ }
264
146
  if (Object.prototype.hasOwnProperty.call(this, "value")) {
265
147
  const v = this.value;
266
148
  delete this.value;
267
149
  this.#seed(v);
268
- } else if (!this.#seeded) {
150
+ } else if (!this.#ready && !this.#seeded) {
269
151
  this.#seed(this.getAttribute("value") ?? this.getAttribute("defaultvalue") ?? "");
270
152
  }
271
- this.#buildSegments();
272
- this.#ready = true;
153
+ if (this.#ready) {
154
+ this.#applyGroupLabel();
155
+ this.#applyGroupDescription();
156
+ } else {
157
+ this.#buildSegments();
158
+ this.#ready = true;
159
+ }
160
+ this.#trailingActions.sync();
161
+ }
162
+ disconnectedCallback() {
163
+ this.#trailingActions.disconnect();
164
+ this.#releaseModality?.();
165
+ this.#releaseModality = void 0;
166
+ this.#pointerSegment = void 0;
167
+ this.#internals?.states?.delete("kb-focus");
273
168
  }
274
169
  /** Seed the value state + canonical cache before the segments exist. */
275
170
  #seed(v) {
@@ -294,10 +189,12 @@ class AInputTimeElement extends HTMLElementBase {
294
189
  }
295
190
  if (name === "status") {
296
191
  this.#syncStatus();
192
+ this.#updateValidity();
297
193
  return;
298
194
  }
299
- if (name === "disabled") {
195
+ if (name === "disabled" || name === "readonly") {
300
196
  this.#syncDisabled();
197
+ this.#syncFocus();
301
198
  return;
302
199
  }
303
200
  if (name === "min" || name === "max") {
@@ -412,7 +309,7 @@ class AInputTimeElement extends HTMLElementBase {
412
309
  this.#literals = [];
413
310
  for (const part of parts) {
414
311
  if (part.type === "hour" || part.type === "minute" || part.type === "dayPeriod") {
415
- const el = document.createElement("input");
312
+ const el = this.doc.createElement("input");
416
313
  const kind = part.type === "dayPeriod" ? "period" : part.type;
417
314
  el.className = `seg seg--${kind}`;
418
315
  el.type = "text";
@@ -436,7 +333,7 @@ class AInputTimeElement extends HTMLElementBase {
436
333
  this.#segs.push(seg);
437
334
  } else {
438
335
  if (!part.value.trim()) continue;
439
- const lit = document.createElement("span");
336
+ const lit = this.doc.createElement("span");
440
337
  lit.className = "lit";
441
338
  lit.part.add("literal");
442
339
  lit.setAttribute("aria-hidden", "true");
@@ -459,15 +356,16 @@ class AInputTimeElement extends HTMLElementBase {
459
356
  #pmText = "PM";
460
357
  // --- Native segment editing + navigation ---
461
358
  #segFromTarget(target) {
462
- if (!(target instanceof HTMLInputElement)) return void 0;
463
359
  return this.#segs.find((seg) => seg.el === target);
464
360
  }
465
361
  // Clicking the field's padding (rather than a native input) moves focus into
466
- // the editor. A real pointer interaction leaves caret placement to the browser.
362
+ // the editor. Compatibility mousedown waits until a touch tap completes;
363
+ // native input targets keep the browser's caret placement.
467
364
  #onFieldMouseDown = (e) => {
365
+ if (e.button !== 0) return;
468
366
  const seg = this.#segFromTarget(e.target);
469
367
  if (seg) {
470
- this.#pointerSegment = seg.el;
368
+ this.#pointerSegment = this.shadowRoot?.activeElement === seg.el ? void 0 : seg.el;
471
369
  return;
472
370
  }
473
371
  if (e.target === this.#field || e.target === this.#segRow) {
@@ -475,9 +373,13 @@ class AInputTimeElement extends HTMLElementBase {
475
373
  this.#focusSegment(this.#segs[0]);
476
374
  }
477
375
  };
376
+ #resetPointerSegment = () => {
377
+ this.#pointerSegment = void 0;
378
+ };
478
379
  #onFocusIn = (e) => {
479
380
  const seg = this.#segFromTarget(e.target);
480
381
  if (!seg) return;
382
+ this.#syncFocus();
481
383
  const pointerFocused = this.#pointerSegment === seg.el;
482
384
  this.#pointerSegment = void 0;
483
385
  if (!pointerFocused) {
@@ -486,20 +388,26 @@ class AInputTimeElement extends HTMLElementBase {
486
388
  });
487
389
  }
488
390
  };
489
- #onFocusOut = (_e) => {
391
+ #onFocusOut = (e) => {
392
+ if (this.#pointerSegment === e.target) this.#resetPointerSegment();
490
393
  queueMicrotask(() => {
394
+ this.#syncFocus();
491
395
  const active = this.shadowRoot?.activeElement;
492
- if (this.#segs.some((seg) => seg.el === active)) return;
493
- if (this.#clampIfComplete()) this.#commitEdit();
396
+ if (this.isConnected && this.#segs.some((seg) => seg.el === active)) return;
397
+ const readonly = this.hasAttribute("readonly");
398
+ if (readonly && !this.#editedSinceChange) return;
399
+ if (!readonly && this.#clampIfComplete()) this.#commitEdit();
494
400
  this.#dispatch("change");
495
401
  });
496
402
  };
497
403
  #onKeyDown = (e) => {
404
+ this.#resetPointerSegment();
498
405
  if (isModifiedNavigationKey(e)) return;
499
406
  const seg = this.#segFromTarget(e.target);
500
407
  if (!seg) return;
501
408
  const { el } = seg;
502
409
  const key = e.key;
410
+ if ((this.#disabled || this.hasAttribute("readonly")) && ["ArrowUp", "ArrowDown", "PageUp", "PageDown"].includes(key)) return;
503
411
  if (key === "ArrowUp" || key === "ArrowDown") {
504
412
  e.preventDefault();
505
413
  this.#step(seg, key === "ArrowUp" ? 1 : -1);
@@ -533,6 +441,7 @@ class AInputTimeElement extends HTMLElementBase {
533
441
  }
534
442
  };
535
443
  #onPaste = (e) => {
444
+ if (this.#disabled || this.hasAttribute("readonly")) return;
536
445
  const text = e.clipboardData?.getData("text/plain").trim() ?? "";
537
446
  if (!/^(?:[01]?\d|2[0-3]):[0-5]\d$/.test(text)) return;
538
447
  e.preventDefault();
@@ -542,7 +451,8 @@ class AInputTimeElement extends HTMLElementBase {
542
451
  };
543
452
  #onInput = (e) => {
544
453
  const seg = this.#segFromTarget(e.target);
545
- if (!seg || e.isComposing) return;
454
+ if (!seg || this.#disabled || this.hasAttribute("readonly") || e.isComposing) return;
455
+ this.#editedSinceChange = true;
546
456
  if (seg.kind === "period") this.#onPeriodInput(e, seg);
547
457
  else this.#onNumericInput(seg);
548
458
  };
@@ -615,6 +525,7 @@ class AInputTimeElement extends HTMLElementBase {
615
525
  * from empty, ↑ lands on min and ↓ on max. Clamps the resulting complete value
616
526
  * into the field's `min`/`max` range (so ↑ can't step past `max`). */
617
527
  #step(seg, delta) {
528
+ this.#editedSinceChange = true;
618
529
  if (seg.kind === "period") {
619
530
  this.#period = this.#period == null ? "am" : this.#period === "am" ? "pm" : "am";
620
531
  this.#clampIfComplete();
@@ -735,29 +646,49 @@ class AInputTimeElement extends HTMLElementBase {
735
646
  }
736
647
  }
737
648
  #dispatch(type) {
649
+ if (type === "change") this.#editedSinceChange = false;
738
650
  this.dispatchEvent(new Event(type, { bubbles: true, composed: type === "input" }));
739
651
  }
740
652
  #applyGroupLabel() {
741
- if (this.#delegatedAria.has("aria-label") || this.#delegatedAria.has("aria-labelledby")) return;
742
- const label = this.#labelSlot.assignedNodes().map((n) => n.textContent ?? "").join(" ").trim();
743
- if (label) this.#segRow.setAttribute("aria-label", label);
744
- else this.#segRow.removeAttribute("aria-label");
653
+ if (this.#delegatedAria.has("aria-labelledby")) return;
654
+ if (this.#delegatedAria.has("aria-label")) {
655
+ this.#segRow.ariaLabelledByElements = [];
656
+ return;
657
+ }
658
+ this.#segRow.ariaLabelledByElements = this.#labelSlot.assignedElements();
745
659
  }
746
660
  #onLabelSlotChange = () => {
747
661
  this.#applyGroupLabel();
748
662
  };
749
663
  #applyGroupDescription() {
750
- if (this.#delegatedAria.has("aria-description") || this.#delegatedAria.has("aria-describedby")) return;
751
- const description = this.#hintSlot.assignedNodes().map((n) => n.textContent ?? "").join(" ").trim();
752
- if (description) this.#segRow.setAttribute("aria-description", description);
753
- else this.#segRow.removeAttribute("aria-description");
664
+ if (this.#delegatedAria.has("aria-describedby")) return;
665
+ if (this.#delegatedAria.has("aria-description")) {
666
+ this.#segRow.ariaDescribedByElements = [];
667
+ return;
668
+ }
669
+ this.#segRow.ariaDescribedByElements = this.#hintSlot.assignedElements();
754
670
  }
755
671
  #onHintSlotChange = () => {
756
672
  this.#applyGroupDescription();
757
673
  };
674
+ get #disabled() {
675
+ return this.hasAttribute("disabled") || this.#formDisabled;
676
+ }
677
+ #syncFocus = () => {
678
+ const modality = this.doc[MODALITY];
679
+ const focused = this.isConnected && !this.#disabled && this.#segs.some((seg) => seg.el === this.shadowRoot?.activeElement);
680
+ if (modality) {
681
+ if (focused && this.hasAttribute("readonly")) modality.active = this.#syncFocus;
682
+ else if (modality.active === this.#syncFocus) modality.active = void 0;
683
+ }
684
+ const keyboard = modality?.keyboard;
685
+ this.#internals?.states?.[keyboard && focused ? "add" : "delete"]("kb-focus");
686
+ };
758
687
  #syncDisabled() {
759
- const off = this.hasAttribute("disabled") || this.#formDisabled;
760
- for (const seg of this.#segs) seg.el.disabled = off;
688
+ for (const seg of this.#segs) {
689
+ seg.el.disabled = this.#disabled;
690
+ seg.el.readOnly = this.hasAttribute("readonly");
691
+ }
761
692
  }
762
693
  #syncStatus() {
763
694
  const critical = this.getAttribute("status") === "critical";
@@ -831,7 +762,8 @@ class AInputTimeElement extends HTMLElementBase {
831
762
  return this.getAttribute("name") ?? "";
832
763
  }
833
764
  set name(v) {
834
- this.setAttribute("name", v);
765
+ if (v == null) this.removeAttribute("name");
766
+ else if (this.getAttribute("name") !== String(v)) this.setAttribute("name", String(v));
835
767
  }
836
768
  // Constraint-validation API, proxied from ElementInternals (mirrors a-input) so
837
769
  // the host behaves like a native control and the `InputTime` wrapper can read
@@ -860,6 +792,7 @@ class AInputTimeElement extends HTMLElementBase {
860
792
  formDisabledCallback(disabled) {
861
793
  this.#formDisabled = disabled;
862
794
  this.#syncDisabled();
795
+ this.#syncFocus();
863
796
  }
864
797
  formStateRestoreCallback(state) {
865
798
  this.value = state ?? "";
@@ -1 +1 @@
1
- @layer base,anta,components,utilities;@layer anta.reset,anta.components,anta.theme;@layer anta.components{a-input:not(:defined){display:grid;grid-template-columns:minmax(0,1fr);row-gap:4px}a-input:not(:defined)>[slot=leading],a-input:not(:defined)>[slot=trailing],a-input:not(:defined)>[slot=clear],a-input:not(:defined)>[slot=hint]{display:none!important}a-input:not(:defined)>[slot=label]{display:block;color:var(--input-label);font-family:var(--sans-serif);font-size:15px;line-height:20px;font-weight:500}a-input[size=small]:not(:defined)>[slot=label]{font-size:13px;line-height:16px}a-input[size=large]:not(:defined)>[slot=label]{font-size:17px;line-height:22px}a-input:not(:defined):after{content:attr(placeholder);display:block;min-height:28px;line-height:28px;padding-inline:7px;border-radius:4px;background:var(--input-bg);box-shadow:inset 0 0 0 var(--input-border-width) var(--input-rest-border);color:var(--input-placeholder);font-family:var(--sans-serif);font-size:15px;font-weight:400;font-stretch:normal;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}a-input[value]:not([value=""]):not([type=password]):not(:defined):after{content:attr(value);color:var(--input-text)}a-input[size=small]:not(:defined):after{min-height:24px;line-height:24px;font-size:13px}a-input[size=large]:not(:defined):after{min-height:32px;line-height:32px;font-size:17px}@media(forced-colors:active){a-input:not(:defined):after{border:1px solid ButtonBorder}}a-input[round]:not(:defined):after{border-radius:var(--input-round, 999px)}a-input{transition:opacity .28s ease-out 40ms}a-input:not(:defined){opacity:.5}@media(prefers-reduced-motion:reduce){a-input{transition:none}}a-input{--input-bg: var(--bg-1);--input-border: var(--border-2);--input-rest-border: var(--input-border);--input-border-width: .5px;--input-text: var(--text-1);--input-label: var(--text-3);--input-placeholder: var(--text-4);--input-adornment: var(--text-3);--input-hint: var(--text-3);--input-trailing-inset: 7px;width:100%}a-input[priority=secondary],a-input[priority=tertiary]{--input-bg: transparent}a-input[priority=tertiary]{--input-rest-border: transparent}@media(hover:hover)and (pointer:fine){a-input:not(:defined):not(:disabled):hover:after{box-shadow:inset 0 0 0 1px var(--input-border)}}a-input:has(>[slot=label])::part(label){display:block}a-input:has(>[slot=leading])::part(leading),a-input:has(>[slot=trailing])::part(trailing){display:flex;align-items:center;flex-shrink:0}a-input:has(>[slot=leading])::part(leading){margin-inline-start:7px}a-input:has(>[slot=trailing])::part(trailing){gap:2px;margin-inline-end:var(--input-trailing-inset, 7px)}a-input:has(>[slot=leading])::part(input){padding-inline-start:5px}a-input[truncate]:not([multiline])::part(input){text-overflow:ellipsis}a-input:has(>[slot=hint])::part(hint){display:flex}a-input[multiline]:has(>[slot=leading])::part(leading),a-input[multiline]:has(>[slot=trailing])::part(trailing){align-self:flex-start;height:calc(var(--_lh) + var(--_pad-block) * 2)}a-input:has([slot=trailing] :is(a-button,button)),a-input:has([slot=trailing]:is(a-button,button)){--input-trailing-inset: 0}a-input[round]{--input-round: 999px;@supports (border-radius: attr(probe type(<length>),1px)){--input-round: attr(round type(<length>), 999px)}}a-input[tone]:not([tone=""]):not([status]){--input-tone-source: var(--border-2);--input-border: light-dark( oklch(from var(--input-tone-source) .7 calc(c*.8) h), oklch(from var(--input-tone-source) .5 calc(c*.8) h) );@supports (color: attr(probe type(<color>),red)){--input-tone-source: attr(tone type(<color>), var(--border-2))}}a-input[status=critical]{--input-status-source: var(--anta-seed-critical);--input-bg: var(--bg-2-critical);--input-hint: var(--text-2-critical)}a-input[status=warning]{--input-status-source: var(--anta-seed-warning);--input-bg: var(--bg-2-warning);--input-hint: var(--text-2-warning)}a-input[status=success]{--input-status-source: var(--anta-seed-success);--input-bg: var(--bg-2-success);--input-hint: var(--text-2-success)}a-input[status=info]{--input-status-source: var(--anta-seed-info);--input-bg: var(--bg-2-info);--input-hint: var(--text-2-info)}a-input[status=brand]{--input-status-source: var(--anta-seed-brand);--input-bg: var(--bg-2-brand);--input-hint: var(--text-2-brand)}a-input[status]:not([status=neutral]){--input-border-width: 1px;--input-rest-border: var(--input-border);--input-border: light-dark( oklch(from var(--input-status-source) .58 c h), oklch(from var(--input-status-source) .52 c h) )}a-input:disabled{--input-bg: light-dark(#44374b12, #e4d1ef0d);--input-border: light-dark(#44374b26, #e4d1ef1f);--input-text: var(--text-4);--input-label: var(--text-4);--input-hint: var(--text-5);cursor:not-allowed}a-input[status]:disabled{--input-bg: light-dark(#44374b12, #e4d1ef0d);--input-border: light-dark(#44374b26, #e4d1ef1f);--input-hint: var(--text-5)}a-input[priority=secondary]:disabled,a-input[priority=tertiary]:disabled{--input-bg: transparent}a-input[size=small] a-icon{--icon-size: 14px}a-input[size=large] a-icon{--icon-size: 18px}a-input [slot=hint]>a-icon{margin-block-start:1px}a-input[size=small] [slot=hint]>a-icon{margin-block-start:.5px}a-input[size=large] [slot=hint]>a-icon{margin-block-start:1.5px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]),textarea[data-anta]{--native-field-block-size: 28px;--native-field-padding-block: 4px;--native-field-font-size: 15px;--native-field-line-height: 20px;--native-field-round: 4px;--native-field-border: var(--border-2);box-sizing:border-box;block-size:var(--native-field-block-size);margin:0;padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;border-radius:var(--native-field-round);outline:0;background:var(--bg-1);box-shadow:inset 0 0 0 .5px var(--native-field-border);color:var(--text-1);caret-color:currentColor;color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-field-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-field-line-height);transition:box-shadow .12s ease}textarea[data-anta]{block-size:auto;min-block-size:var(--native-field-block-size);resize:vertical;overflow-y:auto}input[data-anta][list]::-webkit-calendar-picker-indicator{opacity:0!important;pointer-events:none!important}@media(hover:hover)and (pointer:fine){input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):not(:disabled):hover,textarea[data-anta]:not(:disabled):hover{box-shadow:inset 0 0 0 1px var(--native-field-border)}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):focus,textarea[data-anta]:focus{box-shadow:inset 0 0 0 1px var(--native-field-border);outline:1px solid var(--focus-ring);outline-offset:1px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):disabled,textarea[data-anta]:disabled{background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));box-shadow:inset 0 0 0 .5px color-mix(in oklch,var(--text-1) 15%,transparent);color:var(--text-4);cursor:not-allowed}input[data-anta][type=number]{appearance:textfield;-moz-appearance:textfield}input[data-anta][type=number]::-webkit-inner-spin-button,input[data-anta][type=number]::-webkit-outer-spin-button{appearance:none;margin:0}input[data-anta][type=file]{--native-file-block-size: 28px;--native-file-padding-block: 4px;--native-file-font-size: 15px;--native-file-line-height: 20px;box-sizing:border-box;min-block-size:var(--native-file-block-size);margin:0;padding:0;border:0;color:var(--text-2);color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-file-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-file-line-height)}input[data-anta][type=file]::file-selector-button{box-sizing:border-box;min-block-size:var(--native-file-block-size);margin:0 8px 0 0;padding:var(--native-file-padding-block) 9px;border:0;border-radius:4px;color:var(--text-2);background:color-mix(in oklch,var(--text-1) 10%,transparent);box-shadow:inset 0 0 1px color-mix(in oklch,currentColor,transparent 90%);font:inherit;font-variation-settings:inherit;font-weight:450;letter-spacing:.05ch;line-height:var(--native-file-line-height);cursor:pointer;transition:color .15s ease-out,background-color .15s ease-out}@media(hover:hover)and (pointer:fine){input[data-anta][type=file]:not(:disabled):hover::file-selector-button{color:var(--text-1);background:color-mix(in oklch,var(--text-1) 15%,transparent)}}input[data-anta][type=file]:not(:disabled):active::file-selector-button{color:var(--text-1);background:color-mix(in oklch,var(--text-1) 20%,transparent)}input[data-anta][type=file]:focus-visible{outline:1px solid var(--focus-ring);outline-offset:1px}input[data-anta][type=file]:disabled{color:var(--text-4);cursor:not-allowed}input[data-anta][type=file]:disabled::file-selector-button{color:var(--text-4);background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));cursor:not-allowed}select[data-anta]{--native-field-block-size: 28px;--native-field-padding-block: 4px;--native-field-font-size: 15px;--native-field-line-height: 20px;--native-field-round: 4px;--native-field-border: var(--border-2);--native-select-picker-bg: light-dark( color-mix(in oklch, var(--bg-1) 90%, transparent), color-mix(in oklch, var(--bg-1) 78%, transparent) );--native-select-picker-radius: var(--radius-md, 8px);--native-select-picker-border: 1px solid var(--border-3);--native-select-picker-shadow: 0 2px 6px color-mix(in oklch, var(--text-1) 8%, transparent), 0 8px 24px color-mix(in oklch, var(--text-1) 10%, transparent);--native-select-option-color: var(--text-2);--native-select-option-hover: 5%;--native-select-option-active: 8%;--native-select-option-selected: 8%;--native-select-option-padding-x: 8px;--native-select-option-padding-y: 6px;box-sizing:border-box;block-size:var(--native-field-block-size);margin:0;padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;border-radius:var(--native-field-round);outline:0;background:var(--bg-1);box-shadow:inset 0 0 0 .5px var(--native-field-border);color:var(--text-1);color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-field-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-field-line-height);transition:box-shadow .12s ease}.dark select[data-anta]{--native-select-picker-shadow: 0 2px 8px color-mix(in oklch, black 50%, transparent), 0 12px 32px color-mix(in oklch, black 40%, transparent), inset 0 0 0 1px color-mix(in oklch, white 8%, transparent)}@media(hover:hover)and (pointer:fine){select[data-anta]:not(:disabled):hover{box-shadow:inset 0 0 0 1px var(--native-field-border)}}select[data-anta]:focus{box-shadow:inset 0 0 0 1px var(--native-field-border);outline:1px solid var(--focus-ring);outline-offset:1px}select[data-anta]:disabled{background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));box-shadow:inset 0 0 0 .5px color-mix(in oklch,var(--text-1) 15%,transparent);color:var(--text-4);cursor:not-allowed}@media(forced-colors:active){input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]),select[data-anta],textarea[data-anta]{border:1px solid ButtonBorder}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[data-anta-size=small],select[data-anta][data-anta-size=small],textarea[data-anta][data-anta-size=small]{--native-field-block-size: 24px;--native-field-padding-block: 2px;--native-field-font-size: 13px;--native-field-line-height: 16px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[data-anta-size=large],select[data-anta][data-anta-size=large],textarea[data-anta][data-anta-size=large]{--native-field-block-size: 32px;--native-field-padding-block: 5px;--native-field-font-size: 17px;--native-field-line-height: 22px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[round],select[data-anta][round],textarea[data-anta][round]{--native-field-round: 999px;@supports (border-radius: attr(probe type(<length>),1px)){--native-field-round: attr(round type(<length>), 999px)}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[tone]:not([tone=""]),textarea[data-anta][tone]:not([tone=""]){--native-field-tone: var(--border-2);--native-field-border: light-dark( oklch(from var(--native-field-tone) .7 calc(c*.8) h), oklch(from var(--native-field-tone) .5 calc(c*.8) h) );@supports (color: attr(probe type(<color>),red)){--native-field-tone: attr(tone type(<color>), var(--border-2))}}@supports (appearance: base-select){select[data-anta],select[data-anta]::picker(select){appearance:base-select;-webkit-appearance:base-select}select[data-anta]{padding:0}select[data-anta]>button{box-sizing:border-box;display:flex;align-items:center;gap:4px;inline-size:100%;min-block-size:var(--native-field-block-size);padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;font-variation-settings:inherit;text-align:start}select[data-anta]>button>selectedcontent{flex:1;min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}select[data-anta]::picker-icon{display:none}select[data-anta]>button>a-icon{margin-inline-start:auto;color:var(--text-3);transition:transform .12s ease}select[data-anta]:open>button>a-icon{transform:rotate(180deg)}select[data-anta]::picker(select){box-sizing:border-box;display:flex;flex-direction:column;gap:1px;margin-block-start:4px;padding:4px;border:var(--native-select-picker-border);border-radius:var(--native-select-picker-radius);background:var(--native-select-picker-bg);box-shadow:var(--native-select-picker-shadow);color:var(--native-select-option-color);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}select[data-anta] option{box-sizing:border-box;min-block-size:28px;padding-block:var(--native-select-option-padding-y);padding-inline:var(--native-select-option-padding-x);border-radius:var(--radius-sm, 4px);background:transparent;color:var(--native-select-option-color);cursor:pointer;font-family:var(--sans-serif);font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;letter-spacing:normal;line-height:16px;text-transform:none;transition:background-color .28s ease-out}select[data-anta] option:is(:hover,:focus-visible){background:color-mix(in oklch,currentColor var(--native-select-option-hover),transparent);transition:background-color 60ms ease-in-out}select[data-anta] option:focus-visible{outline:1px solid var(--focus-ring);outline-offset:1px}select[data-anta] option:active{background:color-mix(in oklch,currentColor var(--native-select-option-active),transparent);transition:none}select[data-anta] option:checked{background:color-mix(in oklch,currentColor var(--native-select-option-selected),transparent);transition:background-color .28s ease-out}select[data-anta] option:disabled{color:var(--text-5);cursor:default}select[data-anta] optgroup{display:flex;flex-direction:column;gap:1px;color:var(--text-5);font-family:var(--sans-serif);font-size:.75em;font-weight:600;letter-spacing:.06em;text-transform:uppercase}}}
1
+ @layer base,anta,components,utilities;@layer anta.reset,anta.components,anta.theme;@layer anta.components{a-input{--_fs: 15px;--_pad-block: 4px;--_lh: 20px;--_input-action-size: 24px;display:grid;grid-template-columns:minmax(0,1fr);row-gap:4px;outline:none}a-input::part(label){display:none;color:var(--input-label);font-family:var(--sans-serif);font-size:var(--_fs);line-height:var(--_lh);font-weight:500}a-input::part(field){--_bc: var(--input-rest-border);--_bw: var(--input-border-width);display:flex;align-items:center;box-sizing:border-box;min-height:var(--_input-measured-min-height, 28px);background:var(--input-bg);border-radius:4px;box-shadow:inset 0 0 0 var(--_bw) var(--_bc);transition:box-shadow .12s ease}a-input:state(multiline)::part(field){align-items:stretch}a-input[size=small]{--_fs: 13px;--_lh: 16px;--_input-action-size: 20px}a-input[size=large]{--_fs: 17px;--_lh: 22px;--_input-action-size: 28px}a-input:state(multiline){--_input-action-size: calc(var(--_lh) + var(--_pad-block) * 2 - 4px)}a-input[size=small]::part(field){min-height:var(--_input-measured-min-height, 24px)}a-input[size=large]::part(field){min-height:var(--_input-measured-min-height, 32px)}a-input[round]::part(field){border-radius:var(--input-round, 999px)}@media(hover:hover)and (pointer:fine){a-input:not(:disabled)::part(field):hover{--_bw: 1px;--_bc: var(--input-border)}}a-input:not(:disabled):not([readonly]):not(:state(button)):focus::part(field),a-input:not(:disabled):not([readonly]):state(button):focus:state(button-focus)::part(field),a-input:not(:disabled)[readonly]:focus:state(kb-focus)::part(field){--_bw: 1px;--_bc: var(--input-border);outline:var(--_input-focus-width, 1px) solid var(--focus-ring);outline-offset:var(--_input-focus-offset, 1px)}@media(forced-colors:active){a-input::part(field){border:1px solid ButtonBorder}}a-input::part(input){flex:1 1 auto;min-width:0;width:100%;box-sizing:border-box;border:0;margin:0;padding-block:0;padding-inline:7px;background:transparent;outline:none;color:var(--input-text);font-family:var(--sans-serif);font-stretch:normal;font-style:normal;font-variation-settings:inherit;font-size:var(--_fs);line-height:var(--_lh);font-weight:400;-webkit-appearance:none;appearance:none}a-input:state(multiline)::part(input){resize:none;padding-block:var(--_pad-block);overflow-y:auto}a-input:state(button)::part(input){align-self:stretch;text-align:start;white-space:nowrap;overflow:hidden;cursor:pointer}a-input:state(button):not(:state(filled))::part(input){color:var(--input-placeholder)}a-input[maxrows]:not([rows]):state(multiline)::part(input){max-height:calc(var(--_lh) * var(--_maxrows) + var(--_pad-block) * 2)}a-input:not(:state(button))::part(input)::placeholder{color:var(--input-placeholder);opacity:1}a-input::part(input):disabled{cursor:not-allowed}a-input[readonly]:not([disabled])::part(field),a-input[readonly]:not([disabled]):not(:state(multiline)):not(:state(button))::part(input),a-input[readonly]:not([disabled]):state(multiline)::part(input){cursor:pointer}a-input[readonly]:not([disabled]):not(:state(multiline)):not(:state(button))::part(input){text-overflow:ellipsis}a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-search-cancel-button,a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-search-decoration,a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-search-results-button,a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-search-results-decoration,a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-inner-spin-button,a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;display:none}a-input:not(:state(multiline)):not(:state(button))::part(input)::-ms-clear,a-input:not(:state(multiline)):not(:state(button))::part(input)::-ms-reveal{display:none}a-input::part(leading),a-input::part(trailing){display:none;color:var(--input-adornment);font-size:var(--_fs);line-height:var(--_lh);font-stretch:var(--_input-adornment-font-stretch, normal)}a-input[dim-actions]::part(leading),a-input[dim-actions]::part(trailing),a-input[dim-actions]::part(clear){opacity:var(--_input-actions-opacity, .6);transition:opacity .12s ease}a-input[dim-actions]:not(:disabled)::part(field):hover,a-input[dim-actions]:not(:disabled)::part(field):focus-within{--_input-actions-opacity: 1}a-input:disabled::part(leading),a-input:disabled::part(trailing){opacity:.5;pointer-events:none}a-input::part(clear){display:flex;align-items:center;flex-shrink:0;visibility:hidden;box-sizing:border-box}a-input:has(>[slot=clear])::part(clear){padding:2px}a-input:state(filled):not(:disabled):not([readonly])::part(clear){visibility:visible}a-input:state(multiline):state(filled)::part(clear){align-self:flex-start;height:calc(var(--_lh) + var(--_pad-block) * 2)}a-input::part(hint){display:none;gap:4px;align-items:flex-start;padding-inline-start:1px;color:var(--input-hint);font-family:var(--sans-serif);font-size:calc(var(--_fs) - 1px);line-height:calc(var(--_lh) - 2px)}a-input:not(:defined){display:grid;grid-template-columns:minmax(0,1fr);row-gap:4px}a-input:not(:defined)>[slot=leading],a-input:not(:defined)>[slot=trailing],a-input:not(:defined)>[slot=clear],a-input:not(:defined)>[slot=hint]{display:none!important}a-input:not(:defined)>[slot=label]{display:block;color:var(--input-label);font-family:var(--sans-serif);font-size:15px;line-height:20px;font-weight:500}a-input[size=small]:not(:defined)>[slot=label]{font-size:13px;line-height:16px}a-input[size=large]:not(:defined)>[slot=label]{font-size:17px;line-height:22px}a-input:not(:defined):after{content:attr(placeholder);display:block;min-height:28px;line-height:28px;padding-inline:7px;border-radius:4px;background:var(--input-bg);box-shadow:inset 0 0 0 var(--input-border-width) var(--input-rest-border);color:var(--input-placeholder);font-family:var(--sans-serif);font-size:15px;font-weight:400;font-stretch:normal;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}a-input[value]:not([value=""]):not([type=password]):not(:defined):after{content:attr(value);color:var(--input-text)}a-input[size=small]:not(:defined):after{min-height:24px;line-height:24px;font-size:13px}a-input[size=large]:not(:defined):after{min-height:32px;line-height:32px;font-size:17px}@media(forced-colors:active){a-input:not(:defined):after{border:1px solid ButtonBorder}}a-input[round]:not(:defined):after{border-radius:var(--input-round, 999px)}a-input{transition:opacity .28s ease-out 40ms}a-input:not(:defined){opacity:.5}@media(prefers-reduced-motion:reduce){a-input{transition:none}}a-input{--input-bg: var(--bg-1);--input-border: var(--border-2);--input-rest-border: var(--input-border);--input-border-width: .5px;--input-text: var(--text-1);--input-label: var(--text-3);--input-placeholder: var(--text-4);--input-adornment: var(--text-3);--input-status-text: var(--text-3);--input-hint: var(--text-3);width:100%}a-input[priority=secondary],a-input[priority=tertiary]{--input-bg: transparent}a-input[priority=tertiary]{--input-rest-border: transparent}@media(hover:hover)and (pointer:fine){a-input:not(:defined):not(:disabled):hover:after{box-shadow:inset 0 0 0 1px var(--input-border)}}a-input:defined>:is(a-input-label,a-input-leading,a-input-clear,a-input-trailing,a-input-hint){display:contents}a-input>a-input-leading>a-select-leading{display:contents;color:inherit}a-input>a-input-trailing>a-select-chevron{color:var(--input-status-text)}a-input:has(>[slot=label])::part(label){display:block}a-input:has(>[slot=leading])::part(leading),a-input:has(>[slot=trailing])::part(trailing){display:flex;align-items:center;flex-shrink:0}a-input:has(>[slot=leading])::part(leading){margin-inline-start:7px}a-input:has(>[slot=trailing])::part(trailing){gap:2px;margin-inline-end:var(--input-trailing-inset, 7px)}a-input:has(>[slot=leading])::part(input){padding-inline-start:5px}a-input[truncate]:not(:state(multiline))::part(input){text-overflow:ellipsis}a-input:has(>[slot=hint])::part(hint){display:flex}a-input:state(multiline):has(>[slot=leading])::part(leading),a-input:state(multiline):has(>[slot=trailing])::part(trailing){align-self:flex-start;height:calc(var(--_lh) + var(--_pad-block) * 2)}a-input>:is([slot=clear],[slot=trailing]) :is(a-button,button[data-anta],a[role=button][data-anta]),a-input>:is(a-button,button[data-anta],a[role=button][data-anta]):is([slot=clear],[slot=trailing]){--_fs: inherit;--_lh: inherit;--_pb: 0px;box-sizing:border-box;width:auto;min-width:var(--_input-action-size);height:var(--_input-action-size);min-height:0;justify-content:center;&[data-anta-icon-only]{width:var(--_input-action-size)}}a-input:state(trailing-actions)::part(trailing){margin-inline-end:0;padding-inline-end:var(--input-trailing-inset, 2px)}a-input[round]{--input-round: 999px;@supports (border-radius: attr(probe type(<length>),1px)){--input-round: attr(round type(<length>), 999px)}}a-input[tone]:not([tone=""]):not([status]){--input-tone-source: var(--border-2);--input-border: light-dark( oklch(from var(--input-tone-source) .7 calc(c*.8) h), oklch(from var(--input-tone-source) .5 calc(c*.8) h) );@supports (color: attr(probe type(<color>),red)){--input-tone-source: attr(tone type(<color>), var(--border-2))}}a-input[status=critical]{--input-status-source: var(--anta-seed-critical);--input-bg: var(--bg-2-critical);--input-status-text: var(--text-2-critical)}a-input[status=warning]{--input-status-source: var(--anta-seed-warning);--input-bg: var(--bg-2-warning);--input-status-text: var(--text-2-warning)}a-input[status=success]{--input-status-source: var(--anta-seed-success);--input-bg: var(--bg-2-success);--input-status-text: var(--text-2-success)}a-input[status=info]{--input-status-source: var(--anta-seed-info);--input-bg: var(--bg-2-info);--input-status-text: var(--text-2-info)}a-input[status=brand]{--input-status-source: var(--anta-seed-brand);--input-bg: var(--bg-2-brand);--input-status-text: var(--text-2-brand)}a-input[status]:not([status=neutral]){--input-hint: var(--input-status-text);--input-border-width: 1px;--input-rest-border: var(--input-border);--input-border: light-dark( oklch(from var(--input-status-source) .58 c h), oklch(from var(--input-status-source) .52 c h) )}a-input:disabled{--input-bg: light-dark(#44374b12, #e4d1ef0d);--input-border: light-dark(#44374b26, #e4d1ef1f);--input-text: var(--text-4);--input-label: var(--text-4);--input-hint: var(--text-5);cursor:not-allowed}a-input[status]:disabled{--input-bg: light-dark(#44374b12, #e4d1ef0d);--input-border: light-dark(#44374b26, #e4d1ef1f);--input-hint: var(--text-5)}a-input[priority=secondary]:disabled,a-input[priority=tertiary]:disabled{--input-bg: transparent}a-input[size=small] a-icon{--icon-size: 14px}a-input[size=large] a-icon{--icon-size: 18px}a-input [slot=hint]>a-icon{margin-block-start:1px}a-input[size=small] [slot=hint]>a-icon{margin-block-start:.5px}a-input[size=large] [slot=hint]>a-icon{margin-block-start:1.5px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]),textarea[data-anta]{--native-field-block-size: 28px;--native-field-padding-block: 4px;--native-field-font-size: 15px;--native-field-line-height: 20px;--native-field-round: 4px;--native-field-border: var(--border-2);box-sizing:border-box;block-size:var(--native-field-block-size);margin:0;padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;border-radius:var(--native-field-round);outline:0;background:var(--bg-1);box-shadow:inset 0 0 0 .5px var(--native-field-border);color:var(--text-1);caret-color:currentColor;color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-field-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-field-line-height);transition:box-shadow .12s ease}textarea[data-anta]{block-size:auto;min-block-size:var(--native-field-block-size);resize:vertical;overflow-y:auto}input[data-anta][list]::-webkit-calendar-picker-indicator{opacity:0!important;pointer-events:none!important}@media(hover:hover)and (pointer:fine){input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):not(:disabled):hover,textarea[data-anta]:not(:disabled):hover{box-shadow:inset 0 0 0 1px var(--native-field-border)}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):focus,textarea[data-anta]:focus{box-shadow:inset 0 0 0 1px var(--native-field-border);outline:1px solid var(--focus-ring);outline-offset:1px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):disabled,textarea[data-anta]:disabled{background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));box-shadow:inset 0 0 0 .5px color-mix(in oklch,var(--text-1) 15%,transparent);color:var(--text-4);cursor:not-allowed}input[data-anta][type=number]{appearance:textfield;-moz-appearance:textfield}input[data-anta][type=number]::-webkit-inner-spin-button,input[data-anta][type=number]::-webkit-outer-spin-button{appearance:none;margin:0}input[data-anta][type=file]{--native-file-block-size: 28px;--native-file-padding-block: 4px;--native-file-font-size: 15px;--native-file-line-height: 20px;box-sizing:border-box;min-block-size:var(--native-file-block-size);margin:0;padding:0;border:0;color:var(--text-2);color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-file-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-file-line-height)}input[data-anta][type=file]::file-selector-button{box-sizing:border-box;min-block-size:var(--native-file-block-size);margin:0 8px 0 0;padding:var(--native-file-padding-block) 9px;border:0;border-radius:4px;color:var(--text-2);background:color-mix(in oklch,var(--text-1) 10%,transparent);box-shadow:inset 0 0 1px color-mix(in oklch,currentColor,transparent 90%);font:inherit;font-variation-settings:inherit;font-weight:450;letter-spacing:.05ch;line-height:var(--native-file-line-height);cursor:pointer;transition:color .15s ease-out,background-color .15s ease-out}@media(hover:hover)and (pointer:fine){input[data-anta][type=file]:not(:disabled):hover::file-selector-button{color:var(--text-1);background:color-mix(in oklch,var(--text-1) 15%,transparent)}}input[data-anta][type=file]:not(:disabled):active::file-selector-button{color:var(--text-1);background:color-mix(in oklch,var(--text-1) 20%,transparent)}input[data-anta][type=file]:focus-visible{outline:1px solid var(--focus-ring);outline-offset:1px}input[data-anta][type=file]:disabled{color:var(--text-4);cursor:not-allowed}input[data-anta][type=file]:disabled::file-selector-button{color:var(--text-4);background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));cursor:not-allowed}select[data-anta]{--native-field-block-size: 28px;--native-field-padding-block: 4px;--native-field-font-size: 15px;--native-field-line-height: 20px;--native-field-round: 4px;--native-field-border: var(--border-2);--native-select-picker-bg: light-dark( color-mix(in oklch, var(--bg-1) 90%, transparent), color-mix(in oklch, var(--bg-1) 78%, transparent) );--native-select-picker-radius: var(--radius-md, 8px);--native-select-picker-border: 1px solid var(--border-3);--native-select-picker-shadow: 0 2px 6px color-mix(in oklch, var(--text-1) 8%, transparent), 0 8px 24px color-mix(in oklch, var(--text-1) 10%, transparent);--native-select-option-color: var(--text-2);--native-select-option-hover: 5%;--native-select-option-active: 8%;--native-select-option-selected: 8%;--native-select-option-padding-x: 8px;--native-select-option-padding-y: 6px;box-sizing:border-box;block-size:var(--native-field-block-size);margin:0;padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;border-radius:var(--native-field-round);outline:0;background:var(--bg-1);box-shadow:inset 0 0 0 .5px var(--native-field-border);color:var(--text-1);color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-field-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-field-line-height);transition:box-shadow .12s ease}.dark select[data-anta]{--native-select-picker-shadow: 0 2px 8px color-mix(in oklch, black 50%, transparent), 0 12px 32px color-mix(in oklch, black 40%, transparent), inset 0 0 0 1px color-mix(in oklch, white 8%, transparent)}@media(hover:hover)and (pointer:fine){select[data-anta]:not(:disabled):hover{box-shadow:inset 0 0 0 1px var(--native-field-border)}}select[data-anta]:focus{box-shadow:inset 0 0 0 1px var(--native-field-border);outline:1px solid var(--focus-ring);outline-offset:1px}select[data-anta]:disabled{background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));box-shadow:inset 0 0 0 .5px color-mix(in oklch,var(--text-1) 15%,transparent);color:var(--text-4);cursor:not-allowed}@media(forced-colors:active){input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]),select[data-anta],textarea[data-anta]{border:1px solid ButtonBorder}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[data-anta-size=small],select[data-anta][data-anta-size=small],textarea[data-anta][data-anta-size=small]{--native-field-block-size: 24px;--native-field-padding-block: 2px;--native-field-font-size: 13px;--native-field-line-height: 16px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[data-anta-size=large],select[data-anta][data-anta-size=large],textarea[data-anta][data-anta-size=large]{--native-field-block-size: 32px;--native-field-padding-block: 5px;--native-field-font-size: 17px;--native-field-line-height: 22px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[round],select[data-anta][round],textarea[data-anta][round]{--native-field-round: 999px;@supports (border-radius: attr(probe type(<length>),1px)){--native-field-round: attr(round type(<length>), 999px)}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[tone]:not([tone=""]),textarea[data-anta][tone]:not([tone=""]){--native-field-tone: var(--border-2);--native-field-border: light-dark( oklch(from var(--native-field-tone) .7 calc(c*.8) h), oklch(from var(--native-field-tone) .5 calc(c*.8) h) );@supports (color: attr(probe type(<color>),red)){--native-field-tone: attr(tone type(<color>), var(--border-2))}}@supports (appearance: base-select){select[data-anta],select[data-anta]::picker(select){appearance:base-select;-webkit-appearance:base-select}select[data-anta]{padding:0}select[data-anta]>button{box-sizing:border-box;display:flex;align-items:center;gap:4px;inline-size:100%;min-block-size:var(--native-field-block-size);padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;font-variation-settings:inherit;text-align:start}select[data-anta]>button>selectedcontent{flex:1;min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}select[data-anta]::picker-icon{display:none}select[data-anta]>button>a-icon{margin-inline-start:auto;color:var(--text-3);transition:transform .12s ease}select[data-anta]:open>button>a-icon{transform:rotate(180deg)}select[data-anta]::picker(select){box-sizing:border-box;display:flex;flex-direction:column;gap:1px;margin-block-start:4px;padding:4px;border:var(--native-select-picker-border);border-radius:var(--native-select-picker-radius);background:var(--native-select-picker-bg);box-shadow:var(--native-select-picker-shadow);color:var(--native-select-option-color);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}select[data-anta] option{box-sizing:border-box;min-block-size:28px;padding-block:var(--native-select-option-padding-y);padding-inline:var(--native-select-option-padding-x);border-radius:var(--radius-sm, 4px);background:transparent;color:var(--native-select-option-color);cursor:pointer;font-family:var(--sans-serif);font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;letter-spacing:normal;line-height:16px;text-transform:none;transition:background-color .28s ease-out}select[data-anta] option:is(:hover,:focus-visible){background:color-mix(in oklch,currentColor var(--native-select-option-hover),transparent);transition:background-color 60ms ease-in-out}select[data-anta] option:focus-visible{outline:1px solid var(--focus-ring);outline-offset:1px}select[data-anta] option:active{background:color-mix(in oklch,currentColor var(--native-select-option-active),transparent);transition:none}select[data-anta] option:checked{background:color-mix(in oklch,currentColor var(--native-select-option-selected),transparent);transition:background-color .28s ease-out}select[data-anta] option:disabled{color:var(--text-5);cursor:default}select[data-anta] optgroup{display:flex;flex-direction:column;gap:1px;color:var(--text-5);font-family:var(--sans-serif);font-size:.75em;font-weight:600;letter-spacing:.06em;text-transform:uppercase}}}
@@ -4,6 +4,7 @@ import './a-input.css';
4
4
  declare const READ_DELEGATED_ARIA: unique symbol;
5
5
  declare const WRITE_DELEGATED_ARIA: unique symbol;
6
6
  export declare class AInputElement extends HTMLElementBase {
7
+ #private;
7
8
  static formAssociated: boolean;
8
9
  static observedAttributes: string[];
9
10
  private internals?;
@@ -28,6 +29,7 @@ export declare class AInputElement extends HTMLElementBase {
28
29
  * below the hint or misalign a tooltip. */
29
30
  getAnchorRect(): DOMRect;
30
31
  connectedCallback(): void;
32
+ disconnectedCallback(): void;
31
33
  [SYNC_POPUP_ARIA](relations: PopupAriaRelations): void;
32
34
  attributeChangedCallback(name: string, _old: string | null, value: string | null): void;
33
35
  /** Standard ARIA is the raw custom-element API, but its semantic target is the
@@ -44,14 +46,14 @@ export declare class AInputElement extends HTMLElementBase {
44
46
  private queueDelegatedAria;
45
47
  /** (Re)build the shadow control from the current attributes. */
46
48
  private buildControl;
47
- /** Autogrow (no `rows`) via `field-sizing: content` — or the JS fallback where
48
- * that's unsupported — capped by `maxrows`; a fixed `rows` count switches it
49
+ /** Autogrow (no `rows`) via `field-sizing: content` or the JS fallback,
50
+ * capped by `maxrows`; a fixed `rows` count switches it
49
51
  * off for a constant-height box. */
50
52
  private configureTextarea;
51
- /** Autogrow fallback for browsers without `field-sizing: content` (Firefox,
52
- * Safari < 26.2). Grows the shadow textarea to fit its content; the CSS
53
+ /** Autogrow fallback for WebKit and browsers without `field-sizing: content`.
54
+ * Grows the shadow textarea to fit its content; the CSS
53
55
  * `max-height` cap (when `maxrows` is set) still clamps it and scrolls past.
54
- * A no-op where `field-sizing` is supported, or when the field isn't
56
+ * A no-op on the native sizing path, or when the field isn't
55
57
  * autogrowing (fixed `rows`, or not a textarea) — those size via CSS. */
56
58
  private syncAutoHeight;
57
59
  private forward;
@@ -66,6 +68,7 @@ export declare class AInputElement extends HTMLElementBase {
66
68
  private syncStatus;
67
69
  private onInput;
68
70
  private onChange;
71
+ private syncButtonFocus;
69
72
  private onFocus;
70
73
  private onBlur;
71
74
  private onLabelSlotChange;
@@ -91,10 +94,9 @@ export declare class AInputElement extends HTMLElementBase {
91
94
  get willValidate(): boolean;
92
95
  checkValidity(): boolean;
93
96
  reportValidity(): boolean;
94
- /** Form field name — mirrors the `name` attribute, like native `<input>.name`,
95
- * so `el.name` works (e.g. keying validation messages by field in a form loop). */
97
+ /** Form field name, reflected to the host attribute for native form lookup. */
96
98
  get name(): string;
97
- set name(v: string);
99
+ set name(v: string | null | undefined);
98
100
  formResetCallback(): void;
99
101
  formDisabledCallback(disabled: boolean): void;
100
102
  formStateRestoreCallback(state: string): void;