@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
@@ -12,9 +12,9 @@ declare global {
12
12
  * chevron) is slotted light DOM, styled entirely from `a-menu-item.css`.
13
13
  * The element carries almost no logic — the parent `<a-menu>` owns
14
14
  * click delegation, keyboard navigation, and the close contract. This
15
- * class exists so the menu can identify items via `instanceof` and so
16
- * Enter / Space on a focused item synthesizes a click (the single
17
- * activation path that flows through the menu's click delegation).
15
+ * class owns the active cursor state and ensures Enter / Space on a focused
16
+ * item synthesizes a click (the single activation path through the menu's
17
+ * click delegation).
18
18
  *
19
19
  * ARIA (`role="menuitem"`, `tabindex`, `aria-haspopup` on submenu parents) is
20
20
  * added by the `MenuItem` JSX wrapper, never here — the element must stay
@@ -61,6 +61,8 @@ export declare class AMenuItemElement extends HTMLElementBase {
61
61
  * (`<a data-anta-menu-item href>`) that `MenuItem` renders when given an `href`.
62
62
  * Used for hit-testing (Enter/Space activation, arrow nav, close-on-select). */
63
63
  export declare const MENU_ITEM_SELECTOR = "a-menu-item, a[data-anta-menu-item]";
64
+ /** True for a custom menu row across independently compiled builds and realms. */
65
+ export declare function isCustomMenuItem(el: EventTarget | null | undefined): el is AMenuItemElement;
64
66
  /** True for either menu-item shape (see `MENU_ITEM_SELECTOR`). Narrows an
65
67
  * `EventTarget` / focused node to the row element. */
66
68
  export declare function isMenuItemEl(el: EventTarget | null | undefined): el is HTMLElement;
@@ -25,8 +25,11 @@ class AMenuItemElement extends HTMLElementBase {
25
25
  }
26
26
  }
27
27
  const MENU_ITEM_SELECTOR = "a-menu-item, a[data-anta-menu-item]";
28
+ function isCustomMenuItem(el) {
29
+ return isMenuItemEl(el) && el.localName === "a-menu-item";
30
+ }
28
31
  function isMenuItemEl(el) {
29
- return el instanceof AMenuItemElement || el instanceof HTMLElement && el.matches("a[data-anta-menu-item]");
32
+ return !!el && el.nodeType === 1 && el.matches(MENU_ITEM_SELECTOR);
30
33
  }
31
34
  function ensureMenuItemKeyListener(doc) {
32
35
  if (doc.hasKeyListenerForAMenuItem) return;
@@ -54,6 +57,7 @@ export {
54
57
  AMenuItemElement,
55
58
  MENU_ITEM_SELECTOR,
56
59
  ensureMenuItemKeyListener,
60
+ isCustomMenuItem,
57
61
  isMenuItemEl,
58
62
  register_a_menu_item
59
63
  };
@@ -1 +1 @@
1
- @layer base,anta,components,utilities;@layer anta.reset,anta.components,anta.theme;@layer anta.components{a-menu:not(:defined){display:none}a-menu{--menu-bg: light-dark( color-mix(in oklch, var(--bg-1) 90%, transparent), color-mix(in oklch, var(--bg-1) 78%, transparent) );--menu-radius: var(--radius-md, 8px);--menu-border: 1px solid var(--border-3);--menu-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);--menu-padding: 4px;--menu-min-width: 88px;--menu-backdrop-filter: blur(20px);--menu-width-duration: .16s}@media(prefers-reduced-motion:reduce){a-menu{--menu-width-duration: 0}}a-menu[round]{--menu-radius: 20px;@supports (border-radius: attr(probe type(<length>),1px)){--menu-radius: attr(round type(<length>), 20px)}}.dark a-menu{--menu-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)}}
1
+ @layer base,anta,components,utilities;@layer anta.reset,anta.components,anta.theme;@layer anta.components{a-menu:not(:defined){display:none}a-menu{--menu-bg: light-dark( color-mix(in oklch, var(--bg-1) 90%, transparent), color-mix(in oklch, var(--bg-1) 78%, transparent) );--menu-round: initial;--menu-radius: var(--radius-md, 8px);--menu-border: 1px solid var(--border-3);--menu-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);--menu-padding: 4px;--menu-item-radius: max(0px, calc(var(--menu-radius) - var(--menu-padding)));--menu-min-width: 88px;--menu-backdrop-filter: blur(20px);--menu-width-duration: .16s;--_anchor-width: initial;--_menu-max-height: initial;--_menu-fade-top: initial;--_menu-fade-bottom: initial;--_menu-gap-top: initial;display:contents}a-menu::part(menu){position:fixed;inset:0 auto auto 0;margin:0;padding:0;box-sizing:border-box;flex-direction:column;min-width:max(var(--menu-min-width, 88px),var(--_anchor-width, 0px));max-width:calc(100vw - 8px);max-height:var(--_menu-max-height, calc(100dvh - 8px) );overflow:hidden;background:var(--menu-bg, Canvas);color:var(--text-2, CanvasText);border:var(--menu-border, 1px solid);border-radius:var(--menu-radius, 8px);box-shadow:var(--menu-shadow, 0 8px 24px color-mix(in oklch, black 20%, transparent));-webkit-backdrop-filter:var(--menu-backdrop-filter, blur(20px));backdrop-filter:var(--menu-backdrop-filter, blur(20px));outline:none;opacity:0;translate:0 -4px;transition:opacity .14s ease-out,translate .14s ease-out,width var(--menu-width-duration, .16s) ease,display .14s allow-discrete,overlay .14s allow-discrete}a-menu::part(menu):popover-open{display:flex;opacity:1;translate:0 0;transition:opacity .1s ease-out,translate .1s ease-out,width var(--menu-width-duration, .16s) ease,display .1s allow-discrete,overlay .1s allow-discrete}@starting-style{a-menu::part(menu):popover-open{opacity:0;translate:0 -4px}}a-menu::part(header),a-menu::part(footer){display:block;flex:none}:where(a-menu>:is(a-menu-header,a-select-header)[slot=header]),:where(a-menu>:is(a-menu-footer,a-select-footer)[slot=footer]){display:block;padding:var(--menu-padding, 4px)}a-menu::part(scroll){flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:1px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:var(--menu-padding, 4px);scroll-padding-block:var(--menu-padding, 4px);-webkit-mask-image:linear-gradient(to bottom,transparent 0,transparent var(--_menu-gap-top, 0px),#000 var(--_menu-fade-top, 0px),#000 calc(100% - var(--_menu-fade-bottom, 0px)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,transparent var(--_menu-gap-top, 0px),#000 var(--_menu-fade-top, 0px),#000 calc(100% - var(--_menu-fade-bottom, 0px)),transparent 100%)}@media(prefers-reduced-motion:reduce){a-menu{--menu-width-duration: 0}}a-menu[round]{--menu-radius: var(--menu-round, 20px);@supports (border-radius: attr(probe type(<length>),1px)){--menu-radius: var(--menu-round, attr(round type(<length>), 20px))}}a-menu[round] a-menu:not([round]){--menu-radius: inherit}.dark a-menu{--menu-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)}}
@@ -14,7 +14,7 @@ type MenuState = 'open' | 'closed';
14
14
  * Styling notes (`a-menu.css` ships comment-free):
15
15
  * - `a-menu:not(:defined)` is hidden — before upgrade the host is an unknown
16
16
  * inline element and its light-DOM items would flash in the page. Once
17
- * defined, the shadow `:host { display: contents }` governs and content
17
+ * defined, external `display: contents` governs and content
18
18
  * renders only inside the popover surface via the slot.
19
19
  * - Only the surface "chrome" is tokenized (`--menu-*`): it lives inside the
20
20
  * shadow popover, unreachable from plain consumer CSS; the custom
@@ -99,7 +99,7 @@ export declare class AMenuElement extends HTMLElementBase {
99
99
  private scrollItemIntoView;
100
100
  /** Fade the scrolling body's content into the top / bottom edges — but only on the
101
101
  * side that actually has more to scroll, so a short (non-scrolling) menu and the
102
- * true top / bottom stay crisp. Drives the `--fade-*` / `--gap-top` vars the
102
+ * true top / bottom stay crisp. Drives the private fade/gap properties the
103
103
  * `.scroll` mask reads; runs on scroll and after every (re)position.
104
104
  * Shadow-internal only. */
105
105
  private updateScrollFade;
@@ -157,11 +157,8 @@ export declare class AMenuElement extends HTMLElementBase {
157
157
  /** Apply OPEN to the DOM (no event) — used by uncontrolled intent and by the
158
158
  * controlled `state` sync. */
159
159
  private show;
160
- /** While a filter field is open, the visible option list changes as the user
161
- * types (the consumer re-renders the matches); re-seat the cursor on the first
162
- * match. `childList` only — an item toggling its own `selected` (multi-select)
163
- * mutates deep in its subtree, not this menu's direct children, so it won't
164
- * spuriously reset the cursor. */
160
+ /** Reconcile changed results while filtering. Slotted filters observe direct
161
+ * children only; autocomplete also observes row content and disabled changes. */
165
162
  private startComboObserver;
166
163
  /** Apply CLOSE without notifying this menu's owner. Notify nested menus so
167
164
  * their controlled state follows the closing parent. */
@@ -224,6 +221,7 @@ export declare class AMenuElement extends HTMLElementBase {
224
221
  teardownListeners(): void;
225
222
  private scheduleOpen;
226
223
  private scheduleClose;
224
+ private holdHoverClose;
227
225
  private cancelOpenTimer;
228
226
  private cancelCloseTimer;
229
227
  }