> ## Documentation Index
> Fetch the complete documentation index at: https://anvil.servicetitan.com/llms.txt
> Use this file to discover all available pages before exploring further.

# @servicetitan/anvil2

> Release notes for @servicetitan/anvil2, newest first.

Current version: **3.17.0**. Source: [`packages/anvil2/CHANGELOG.md`](https://github.com/servicetitan/hammer/blob/main/packages/anvil2/CHANGELOG.md).

Older releases: [v2.x](https://anvil.servicetitan.com/docs/resources/changelogs/anvil2/v2.md), [v1.x](https://anvil.servicetitan.com/docs/resources/changelogs/anvil2/v1.md), [v0.x](https://anvil.servicetitan.com/docs/resources/changelogs/anvil2/v0.md).

## 3.17.0

### Minor Changes

* [#2817](https://github.com/servicetitan/hammer/pull/2817) [`d6533f5`](https://github.com/servicetitan/hammer/commit/d6533f5c856509ad9c7265e25121aa28c208f4b0) Thanks [@cursor](https://github.com/apps/cursor)! - \[prefersReducedMotion, useReducedMotion] Add `prefersReducedMotion` util and re-export Motion `useReducedMotion`

* [#3076](https://github.com/servicetitan/hammer/pull/3076) [`37a1f04`](https://github.com/servicetitan/hammer/commit/37a1f04cf8c9cd4a90a00f62b0cb929e91277cac) Thanks [@lgutin](https://github.com/lgutin)! - \[DrillDown] Add `actions` prop to `DrillDown.Header` for an overflow menu matching `Drawer.Header`, and export the `DrillDownHeaderAction` type. Header actions render in `Drawer` and `Page.Panel` hosts only; inside a `Dialog` they are ignored with a development warning, since `Dialog.Header` has no overflow menu.

### Patch Changes

* [#3104](https://github.com/servicetitan/hammer/pull/3104) [`67eb494`](https://github.com/servicetitan/hammer/commit/67eb494c63def602c35bf604a6d939cf201dbbe2) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - \[Tab] Fix `TabList` throwing "Maximum update depth exceeded" when tabs that fill the list are near the overflow width and a render changes the list's width.

* [#3076](https://github.com/servicetitan/hammer/pull/3076) [`37a1f04`](https://github.com/servicetitan/hammer/commit/37a1f04cf8c9cd4a90a00f62b0cb929e91277cac) Thanks [@lgutin](https://github.com/lgutin)! - \[DrillDown] Fix `DrillDown.Header` Close persisting after `onClose` is removed or the `DrillDown` unmounts

* [#3100](https://github.com/servicetitan/hammer/pull/3100) [`814f8ef`](https://github.com/servicetitan/hammer/commit/814f8ef848161efcefc70cecb395a39f39d83ff4) Thanks [@SimonyanGrno](https://github.com/SimonyanGrno)! - **BETA** \[DataTable] Add `bulkActions` prop for a bulk action bar that replaces the filter bar and toolbar while rows are selected, and `clearSelection` on `DataTableRef`

* [#2934](https://github.com/servicetitan/hammer/pull/2934) [`4e7f12a`](https://github.com/servicetitan/hammer/commit/4e7f12a0852ba4dd1e685b509a31ce0ad5b8ea3f) Thanks [@cursor](https://github.com/apps/cursor)! - \[Exports] Stop shipping Storybook-only CSS bundles in the published package

* [#3123](https://github.com/servicetitan/hammer/pull/3123) [`70228d8`](https://github.com/servicetitan/hammer/commit/70228d8eb800742bd720b0ab73d7e55b07c4c645) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[DataTable] Add a controlled Edit Columns drawer for order, visibility, and left pinning.

* [#3109](https://github.com/servicetitan/hammer/pull/3109) [`aa7ac68`](https://github.com/servicetitan/hammer/commit/aa7ac68aff3b0080e90276e1600f177e05126757) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - \[DataTable (beta)] Add a filter bar and toolbar actions above the table

  * `filters` (`DataTableFilters`) renders a `FilterBar`. `items` takes the filter definitions; filters marked `drawerOnly` appear only in the filter drawer
  * `filters.onChange` receives the updated filters and returns a paginated table to its first page. DataTable does not filter rows itself, so apply the filters to `data` or to your `loadPageData` request
  * `filters.controlled` defers inline filters that support an Apply step; filters without one still commit immediately, and the drawer always batches changes
  * `tools` (`DataTableTools`) takes `actions`, a list of toolbar button props (`DataTableToolbarAction`) rendered to the right of the filter bar
  * `filters.size` and `tools.size` set the size of the filter bar and toolbar controls. Both default to `medium`

* [#3131](https://github.com/servicetitan/hammer/pull/3131) [`31ce9ee`](https://github.com/servicetitan/hammer/commit/31ce9ee3f12c8060d90c8d48623f2291468a0411) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[DataTable] Add a `rowAdd` prop that renders an Add row button in a toolbar below the table and calls `onAddRow`. Set `emptyState.includeAddRow` to repeat the button in the empty state.

* [#3103](https://github.com/servicetitan/hammer/pull/3103) [`2839b4e`](https://github.com/servicetitan/hammer/commit/2839b4efadb054d1412f5f6b5742f02cc7cd6a87) Thanks [@subham-ttan](https://github.com/subham-ttan)! - \[ListView] Fix crash when an option is dynamically disabled, and keep keyboard focus on a valid row

* [#2963](https://github.com/servicetitan/hammer/pull/2963) [`f05ead9`](https://github.com/servicetitan/hammer/commit/f05ead9b8fc6978d107914e2416289006773cf8f) Thanks [@helenvholmes](https://github.com/helenvholmes)! - \[Icons] Add `gnav_messages_active` and `gnav_messages_inactive` ST icons

* Updated dependencies \[[`11017d0`](https://github.com/servicetitan/hammer/commit/11017d0fe0bd87262d9fe1227d336228bb27350d)]:
  * @servicetitan/hammer-token\@3.6.1

## 3.16.1

### Patch Changes

* [#2986](https://github.com/servicetitan/hammer/pull/2986) [`7e32bbb`](https://github.com/servicetitan/hammer/commit/7e32bbbb5a28b17af296a8aea96750a24e6850ed) Thanks [@cursor](https://github.com/apps/cursor)! - \[Combobox, MultiSelectField, SelectField, TreeSelectField] Fix mouse focus ring on select triggers and stop caret focus outline from rotating when the menu opens

* [#3073](https://github.com/servicetitan/hammer/pull/3073) [`c3fad15`](https://github.com/servicetitan/hammer/commit/c3fad15d503cfdf02183f490d87578fae959e942) Thanks [@subham-ttan](https://github.com/subham-ttan)! - \[SelectField] Fix the combobox search input: reopening after a selection now selects the label (so typing replaces it instead of garbling it), and the cursor no longer jumps to the end while editing search text

## 3.16.0

### Minor Changes

* [#3031](https://github.com/servicetitan/hammer/pull/3031) [`f378747`](https://github.com/servicetitan/hammer/commit/f3787470418c011af13ab2fc744d141cf1c2dfc6) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[Pagination] Add `itemRangeFormatter` prop to customize the item-range text

### Patch Changes

* [#3036](https://github.com/servicetitan/hammer/pull/3036) [`0c93d69`](https://github.com/servicetitan/hammer/commit/0c93d695954b22d3a27a5646c63abe24bd7f0ed8) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Dependencies] Use caret ranges for all dependencies to avoid version conflicts in consuming apps

* [#2916](https://github.com/servicetitan/hammer/pull/2916) [`c88993f`](https://github.com/servicetitan/hammer/commit/c88993f3101671fe95d1de6aada7015651ac2fd6) Thanks [@Diveafall](https://github.com/Diveafall)! - \[MultiSelectField, MultiSelectMenu, SelectField, SelectMenu] Fix `Load more` closing the options popover, auto-load the next page on scroll for lazy lists, and stop duplicate page requests with `virtualize`

* [#2880](https://github.com/servicetitan/hammer/pull/2880) [`c773b39`](https://github.com/servicetitan/hammer/commit/c773b3902ef520550c5e31d870bc6a07da87e3c7) Thanks [@lgutin](https://github.com/lgutin)! - \[ProgressBar] Update success and error indicators to use the shared Status Icon

* [#3062](https://github.com/servicetitan/hammer/pull/3062) [`9b9af1f`](https://github.com/servicetitan/hammer/commit/9b9af1fa8ddee75ed3ee779580d2a55f730478f2) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - **BETA** \[FilterBar] Fix an update loop when typing quickly in the search field

## 3.15.2

### Patch Changes

* [#3018](https://github.com/servicetitan/hammer/pull/3018) [`723f70d`](https://github.com/servicetitan/hammer/commit/723f70dbdab20257bd386d8670623d4b0c8f730d) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Dependencies] Update `@tiptap/*` to `3.31.4` to pick up [GHSA-j95f-988m-3j2f](https://github.com/advisories/GHSA-j95f-988m-3j2f) and [GHSA-cp6q-959q-f8rh](https://github.com/advisories/GHSA-cp6q-959q-f8rh) fixes in `@tiptap/core`

## 3.15.1

### Patch Changes

* [#2980](https://github.com/servicetitan/hammer/pull/2980) [`fa95ee2`](https://github.com/servicetitan/hammer/commit/fa95ee2c790b176060b3d5f1b862935e706d468e) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[FilterBar] Add a Clear action to `numericRange` filters

* [#2980](https://github.com/servicetitan/hammer/pull/2980) [`fa95ee2`](https://github.com/servicetitan/hammer/commit/fa95ee2c790b176060b3d5f1b862935e706d468e) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[FilterBar] Fix Enter on Clear or Cancel applying the draft in a controlled filter popover

* [#3001](https://github.com/servicetitan/hammer/pull/3001) [`6593fa3`](https://github.com/servicetitan/hammer/commit/6593fa38db6ac5601ceebcbca9ba8d08d49dc744) Thanks [@subham-ttan](https://github.com/subham-ttan)! - \[Details] Fix `Summary` chevron sitting vertically misaligned against the label text in Sofia Pro

* [#2983](https://github.com/servicetitan/hammer/pull/2983) [`1a0360f`](https://github.com/servicetitan/hammer/commit/1a0360f3ebed259f33e7c48a263c9becc5021e2d) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[Stepper] Fix incoming panel blinking empty at the end of the step fade

## 3.15.0

### Minor Changes

* [#2984](https://github.com/servicetitan/hammer/pull/2984) [`1a54b6c`](https://github.com/servicetitan/hammer/commit/1a54b6c8c7529acca073195636dfe33e77c3b774) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[Icons] Add new global nav icons: `gnav_analytics_active`, `gnav_analytics_inactive`

## 3.14.1

### Patch Changes

* Updated dependencies \[[`c8daeed`](https://github.com/servicetitan/hammer/commit/c8daeede0764b2a768160223d877377c5e3c27cf)]:
  * @servicetitan/hammer-token\@3.6.0

## 3.14.0

### Minor Changes

* [#2941](https://github.com/servicetitan/hammer/pull/2941) [`1bce68a`](https://github.com/servicetitan/hammer/commit/1bce68a78f38f931e38429d94ac3a74811fc2b37) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - \[Icons] Add `gnav_automations_active`, `gnav_automations_inactive`, `gnav_command_center_active`, and `gnav_command_center_inactive` global nav icons

### Patch Changes

* Updated dependencies \[[`e5a2083`](https://github.com/servicetitan/hammer/commit/e5a20838c9c4ec3d703def78fa0a86af7b80b094)]:
  * @servicetitan/hammer-token\@3.5.0

## 3.13.7

### Patch Changes

* [#2923](https://github.com/servicetitan/hammer/pull/2923) [`97cec27`](https://github.com/servicetitan/hammer/commit/97cec27d0e7c15f568892036323379a9bd1c3948) Thanks [@jarizast](https://github.com/jarizast)! - \[DateFieldYearless, DateFieldYearlessRange] Fix the first month or day click in the picker being discarded and closing the popover

* [#2929](https://github.com/servicetitan/hammer/pull/2929) [`2b2c7d5`](https://github.com/servicetitan/hammer/commit/2b2c7d5cad5fd88c41d546690f5c003b4df41ce9) Thanks [@ericag1985](https://github.com/ericag1985)! - \[Chip] Fix custom colors defaulting to the system color scheme when theme mode is unset

* [#2929](https://github.com/servicetitan/hammer/pull/2929) [`2b2c7d5`](https://github.com/servicetitan/hammer/commit/2b2c7d5cad5fd88c41d546690f5c003b4df41ce9) Thanks [@ericag1985](https://github.com/ericag1985)! - \[Avatar] Fix custom colors defaulting to the system color scheme when theme mode is unset

* [#2926](https://github.com/servicetitan/hammer/pull/2926) [`cfcb71d`](https://github.com/servicetitan/hammer/commit/cfcb71df3560e97daff448a4b6e7feeb320bc393) Thanks [@ericag1985](https://github.com/ericag1985)! - \[Calendar] Fix bounded month navigation closing containing popovers

* [#2929](https://github.com/servicetitan/hammer/pull/2929) [`2b2c7d5`](https://github.com/servicetitan/hammer/commit/2b2c7d5cad5fd88c41d546690f5c003b4df41ce9) Thanks [@ericag1985](https://github.com/ericag1985)! - **BETA** \[DataTable] Fix empty-state artwork defaulting to the system color scheme when theme mode is unset

* [#2920](https://github.com/servicetitan/hammer/pull/2920) [`82dee43`](https://github.com/servicetitan/hammer/commit/82dee43b8c1ac2706c7e712c0ee67bab9365e751) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - \[AnvilProvider] Fix `anvil2` body class being stripped by one MFE scope's unmount while another scope's `AnvilProvider` is still mounted

## 3.13.6

### Patch Changes

* [#2869](https://github.com/servicetitan/hammer/pull/2869) [`3accfab`](https://github.com/servicetitan/hammer/commit/3accfab1f4fcd155b385eed8bcd664c8b7ce56d2) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - \[MultiSelectField, SelectField] Fix React 18 unknown-property warning for the HTML `popovertarget` attribute without reintroducing the React 19 casing warning

## 3.13.5

### Patch Changes

* [#2894](https://github.com/servicetitan/hammer/pull/2894) [`a2f07c5`](https://github.com/servicetitan/hammer/commit/a2f07c507c4a6ad060c99b34a50773f7c6ce60d5) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - **BETA** \[SavedFiltersButton] Fix Edit Saved Filters reopening a stale preset edit form instead of the preset list

* Updated dependencies \[[`dc68e22`](https://github.com/servicetitan/hammer/commit/dc68e222747931ea6abc98159308ae245070419b)]:
  * @servicetitan/hammer-token\@3.4.1

## 3.13.4

### Patch Changes

* [#2844](https://github.com/servicetitan/hammer/pull/2844) [`a32f02b`](https://github.com/servicetitan/hammer/commit/a32f02b31598392179894aa8c05d058c72a576f0) Thanks [@tounsoo](https://github.com/tounsoo)! - **BETA** \[DataTable] Fix `emptyState.svg` not rendering `forwardRef` illustration components

## 3.13.3

### Patch Changes

* [#2820](https://github.com/servicetitan/hammer/pull/2820) [`10234f8`](https://github.com/servicetitan/hammer/commit/10234f83c22d2f293f8a1a5af9a8f5e26a6c0bf7) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - **BETA** \[FilterBar] Add `customRange.minDate`, `customRange.maxDate`, and `customRange.unavailable` to `dateList` filters

* Updated dependencies \[[`5043512`](https://github.com/servicetitan/hammer/commit/50435128366e6a5511bb9b6802be15e2cfec472f)]:
  * @servicetitan/hammer-token\@3.4.0

## 3.13.2

### Patch Changes

* [#2429](https://github.com/servicetitan/hammer/pull/2429) [`4e0d6fd`](https://github.com/servicetitan/hammer/commit/4e0d6fd44ad21cd81186bd9f13139c2613e1576d) Thanks [@cursor](https://github.com/apps/cursor)! - \[Menu] Fix nested menus ignoring the `trigger` render prop

* [#2684](https://github.com/servicetitan/hammer/pull/2684) [`af3ab2d`](https://github.com/servicetitan/hammer/commit/af3ab2dab2c68dbdf2be05529a3aca5920d85d54) Thanks [@cursor](https://github.com/apps/cursor)! - \[FilterBar] Fix selected trigger hover/active colors and count badge contrast

* [#2813](https://github.com/servicetitan/hammer/pull/2813) [`fa356f3`](https://github.com/servicetitan/hammer/commit/fa356f37d7f5fa1be80adecac5f315cc666ebca8) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[Page] Replace `Page.Content` virtual scrolling with a native, keyboard-operable `overflow-y: auto` container on the shared `main` wrapper at `lg`+ — breaking for consumers relying on document-level scroll or the internal `virtual-scroll-container` class.

## 3.13.1

### Patch Changes

* [#2773](https://github.com/servicetitan/hammer/pull/2773) [`19423e4`](https://github.com/servicetitan/hammer/commit/19423e4c8d932049acf378339d1852ea8fa54d04) Thanks [@helenvholmes](https://github.com/helenvholmes)! - \[usePrefersColorScheme] Fix `mode` staying `"light"` until the system color scheme changes

* [#2744](https://github.com/servicetitan/hammer/pull/2744) [`988aa23`](https://github.com/servicetitan/hammer/commit/988aa236d47fed86ac873864754176a22b7aa49d) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[MultiSelectField, MultiSelectFieldSync] Fix `onSelectedOptionsChange` re-firing after selection when the parent writes a new array of the same ids

* [#2796](https://github.com/servicetitan/hammer/pull/2796) [`b4d6cf1`](https://github.com/servicetitan/hammer/commit/b4d6cf1bc5b5342c1462fdf6dc72d2bc3df80ce0) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Popover, ThemeProvider] Fix custom theme tokens being reset to core defaults on top-layer popovers, menus, tooltips, and toasts

* [#2775](https://github.com/servicetitan/hammer/pull/2775) [`37b86ca`](https://github.com/servicetitan/hammer/commit/37b86ca2b11cdbc1f929e33d5503ba2183e85e3b) Thanks [@lgutin](https://github.com/lgutin)! - **BETA** \[DataTable] Fix table content and pinned columns misaligning with the container edge by removing `padding-inline` from the scroll container so content stays flush and sticky offsets are correct. Paginated tables no longer show a stray horizontal scrollbar and trailing empty space when their columns already fit

* [#2745](https://github.com/servicetitan/hammer/pull/2745) [`73447c9`](https://github.com/servicetitan/hammer/commit/73447c9b1fb33f680db055828971b4814bd866b7) Thanks [@TitanBob](https://github.com/TitanBob)! - \[Toaster] Fix a document-wide `MutationObserver` staying connected after a toast auto-closes, and scan MFE shadow roots once per mutation batch instead of once per root

* [#2781](https://github.com/servicetitan/hammer/pull/2781) [`44c29ae`](https://github.com/servicetitan/hammer/commit/44c29ae627a2356221cba0719a85d5ca4e376ee2) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[Page] Add new `Page` beta export with `Page.Panel.Header`, `Page.Panel.Content`, and `Page.Panel.Footer` with Drawer-like sticky header, scrollable content, and optional sticky footer; padding now lives on those slots instead of `Page.Panel`; `Drilldown` should be direct sibling of `Page.Panel` rather than nested within `Page.Panel.Content`

* [#2745](https://github.com/servicetitan/hammer/pull/2745) [`73447c9`](https://github.com/servicetitan/hammer/commit/73447c9b1fb33f680db055828971b4814bd866b7) Thanks [@TitanBob](https://github.com/TitanBob)! - \[Dialog, Drawer, Toaster] Fix closing one of two open dialogs un-hiding the page toaster behind the other dialog, and stop `toast.dismiss()` re-rendering toast consumers when no toast is open

* [#2791](https://github.com/servicetitan/hammer/pull/2791) [`4df4ff8`](https://github.com/servicetitan/hammer/commit/4df4ff864921d0d939505f9579151a05008556bf) Thanks [@lgutin](https://github.com/lgutin)! - **BETA** \[DataTable] Migrate row and cell error/warning indicators to the standard status-specific icon set (filled circular glyphs), rendered at the dense `small` (12px) size for consistency with Alert, FieldMessage, and Toast. The warning cell outline now uses the `border-color-warning` token so it matches the Alert warning border.

## 3.13.0

### Minor Changes

* [#2746](https://github.com/servicetitan/hammer/pull/2746) [`ec6d604`](https://github.com/servicetitan/hammer/commit/ec6d6040dc705ad316ea897e27e876bcc5b33eed) Thanks [@Diveafall](https://github.com/Diveafall)! - \[Page] Add `items` to `Page.Header` `actions.primary` for a primary action that opens a menu

### Patch Changes

* [#2762](https://github.com/servicetitan/hammer/pull/2762) [`dc83d43`](https://github.com/servicetitan/hammer/commit/dc83d43675172d15ba83a8eefcf039a5fffbcfcf) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Menu, Page] Fix the Page Header more menu staying open after focus leaves the trigger

## 3.12.2

### Patch Changes

* [#2754](https://github.com/servicetitan/hammer/pull/2754) [`55684fd`](https://github.com/servicetitan/hammer/commit/55684fdd082023d3d54fb8c2e3def8de894d3f4d) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[TimeField] Fix input shrinking when a value is entered

* [#2715](https://github.com/servicetitan/hammer/pull/2715) [`10fe003`](https://github.com/servicetitan/hammer/commit/10fe003868af70208d1ae87f85cc437585660700) Thanks [@Diveafall](https://github.com/Diveafall)! - **BETA** \[DataTable] Cap the loading spacer's first-load height so a large `rowsPerPage` no longer reserves a viewport-sized empty area

## 3.12.1

### Patch Changes

* [#2725](https://github.com/servicetitan/hammer/pull/2725) [`a9e5a1d`](https://github.com/servicetitan/hammer/commit/a9e5a1d53e4096da043f3a005c1d98cb811bae50) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[MultiSelectFieldSync, MultiSelectMenuSync, SelectFieldSync, SelectMenuSync] Fix loader flashing when `options` is a new array with the same contents

* [#2739](https://github.com/servicetitan/hammer/pull/2739) [`4ee2c39`](https://github.com/servicetitan/hammer/commit/4ee2c39749ffdbe6dec750b8256974c00737b14e) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[Toaster] Fix a centered black square from native `popover` user-agent styles when a toast is visible

## 3.12.0

### Minor Changes

* [#2710](https://github.com/servicetitan/hammer/pull/2710) [`68dcc25`](https://github.com/servicetitan/hammer/commit/68dcc25f0ff5a1fb3cecc0a43838d3dcbec48bfe) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[StepperBase] Add a controllable stepper primitive with per-step `state` for status-in-sequence flows

## 3.11.1

### Patch Changes

* [#2705](https://github.com/servicetitan/hammer/pull/2705) [`3cd81ef`](https://github.com/servicetitan/hammer/commit/3cd81ef31a1bf1fd820c80c001ea600fa8eba9c7) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - \[Menu] Fix `defaultOpen` not showing the menu on mount, including nested submenus

## 3.11.0

### Minor Changes

* [#2630](https://github.com/servicetitan/hammer/pull/2630) [`e89d590`](https://github.com/servicetitan/hammer/commit/e89d5909b72d0222cf9b1cd1c6680bfa27e4d711) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Exports] Add `@servicetitan/anvil2/themes` subpath exporting `carto` theme overrides

* [#2641](https://github.com/servicetitan/hammer/pull/2641) [`450049b`](https://github.com/servicetitan/hammer/commit/450049b24aaaaba6f74b591ab5086ff7d81dbbbb) Thanks [@Diveafall](https://github.com/Diveafall)! - Add a `noMargin` prop to `Text` for the `headline` variant. Headlines ship a bottom margin so they space correctly above following content, which offsets them when they are aligned against a sibling such as a `Chip`. Setting `noMargin` removes that margin so the headline's layout box hugs the text. The prop is a type error on the `body` and `eyebrow` variants, which already have no margins.

* [#2630](https://github.com/servicetitan/hammer/pull/2630) [`e89d590`](https://github.com/servicetitan/hammer/commit/e89d5909b72d0222cf9b1cd1c6680bfa27e4d711) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[ThemeProvider, Tokens] Enable border-radius and typography CSS variables to cascade from ThemeProvider

### Patch Changes

* [#2572](https://github.com/servicetitan/hammer/pull/2572) [`04ca3d0`](https://github.com/servicetitan/hammer/commit/04ca3d0d736d1f40c1c97bfc3af120f3c1b80505) Thanks [@karpoff-titan](https://github.com/karpoff-titan)! - \[MultiSelectField, SelectField] Make `option.id` type generic so consumers can use `string` or `number` ids without casting

* Updated dependencies \[[`e89d590`](https://github.com/servicetitan/hammer/commit/e89d5909b72d0222cf9b1cd1c6680bfa27e4d711)]:
  * @servicetitan/hammer-token\@3.3.0

## 3.10.1

### Patch Changes

* [#2697](https://github.com/servicetitan/hammer/pull/2697) [`f4a1979`](https://github.com/servicetitan/hammer/commit/f4a19792f783d9693126129306cde756445a77ab) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[MultiSelectField, SelectField, SelectTrigger] Fix disabled fields still opening from wrapper or caret clicks

* [#2679](https://github.com/servicetitan/hammer/pull/2679) [`8276098`](https://github.com/servicetitan/hammer/commit/8276098c567ca977a1d2737d0b77c191008f43e4) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[MultiSelectField, MultiSelectFieldSync] Fix clear button vertical alignment when `disableSearch` is set

* [#2679](https://github.com/servicetitan/hammer/pull/2679) [`8276098`](https://github.com/servicetitan/hammer/commit/8276098c567ca977a1d2737d0b77c191008f43e4) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[MultiSelectField, MultiSelectFieldSync] When `singleRow`, reduce search input min-width so chips are not forced into premature `+N` collapse

* [#2679](https://github.com/servicetitan/hammer/pull/2679) [`8276098`](https://github.com/servicetitan/hammer/commit/8276098c567ca977a1d2737d0b77c191008f43e4) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[MultiSelectField, MultiSelectFieldSync] Fix `singleRow` chip overflow so it remeasures when the field width changes

* [#2678](https://github.com/servicetitan/hammer/pull/2678) [`9f573d2`](https://github.com/servicetitan/hammer/commit/9f573d2a9469b0570b9958efcdee70fc2fd79856) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[DrillDown] Align `Content` layout with `Drawer.Content` so children can shrink within the host width

* [#2679](https://github.com/servicetitan/hammer/pull/2679) [`8276098`](https://github.com/servicetitan/hammer/commit/8276098c567ca977a1d2737d0b77c191008f43e4) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[TreeSelectField, TreeSelectFieldSync] When `singleRow`, reduce search input min-width so chips are not forced into premature `+N` collapse

* [#2679](https://github.com/servicetitan/hammer/pull/2679) [`8276098`](https://github.com/servicetitan/hammer/commit/8276098c567ca977a1d2737d0b77c191008f43e4) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[TreeSelectField, TreeSelectFieldSync] Fix `singleRow` chip overflow so it remeasures when the field width changes

## 3.10.0

### Minor Changes

* [#2433](https://github.com/servicetitan/hammer/pull/2433) [`c927b6d`](https://github.com/servicetitan/hammer/commit/c927b6d27c01885b76f8d054c27a86cdcd5bed28) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[Combobox, DateFieldRange, DateFieldSingle, DateFieldYearless, DateFieldYearlessRange, MultiSelectField, MultiSelectMenu, Pagination, SelectField, SelectMenu, Toolbar] Add internally-managed `data-anv-part` attributes to interactive sub-elements for e2e test targeting, and forward consumer `data-*` attributes onto the public root or trigger/input surface

* [#2671](https://github.com/servicetitan/hammer/pull/2671) [`b263157`](https://github.com/servicetitan/hammer/commit/b263157ce18e33b911962f673237874261d13496) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - These version bumps clear npm version numbers reserved after a security-related unpublish.

  **Consumers must upgrade to the new versions.** Do **not** pin to unpublished or reserved numbers. Higher versions that still appear in the npm packument `time` field but are missing from installable `versions` must not be used — they return 404 and reject republish.

* [#2672](https://github.com/servicetitan/hammer/pull/2672) [`3a2d620`](https://github.com/servicetitan/hammer/commit/3a2d6201b9b89c66acca0130eda5798bf8d8dfdd) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - \[DrillDown] Add an `interactive` prop to suspend a screen's focus trap while it stays mounted and visible, for cases where a consumer opens an independent `Dialog`/`Drawer` on top of it

### Patch Changes

* [#2433](https://github.com/servicetitan/hammer/pull/2433) [`c927b6d`](https://github.com/servicetitan/hammer/commit/c927b6d27c01885b76f8d054c27a86cdcd5bed28) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[DataTable, FilterBar, SavedFiltersButton, Toolbar, TreeSelectField, TreeSelectFieldSync, TreeSelectMenu, TreeSelectMenuSync] Add internally-managed `data-anv-part` attributes to interactive sub-elements for e2e test targeting, and forward consumer `data-*` attributes onto the public root or trigger surface

* [#2643](https://github.com/servicetitan/hammer/pull/2643) [`0a1fa99`](https://github.com/servicetitan/hammer/commit/0a1fa993e16c904aff3b7962f3d3edf24aa8b67f) Thanks [@Diveafall](https://github.com/Diveafall)! - \[MultiSelectField, TreeSelectField] Fix selected `disabled` options so their chips omit the close control, and clear/backspace skip locked selections

* [#2672](https://github.com/servicetitan/hammer/pull/2672) [`3a2d620`](https://github.com/servicetitan/hammer/commit/3a2d6201b9b89c66acca0130eda5798bf8d8dfdd) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - **BETA** \[SavedFiltersButton] Fix the Custom Range dialog for a `dateList` filter being unresponsive to all clicks (day selection, Cancel, and the header close button) when opened while editing a saved filter

* [#2667](https://github.com/servicetitan/hammer/pull/2667) [`a7f1232`](https://github.com/servicetitan/hammer/commit/a7f1232fdc2fe1472aae440d82a65eeaf1985a12) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Page] Fix `Page.Sidebar` locking page scroll and showing the wrong chevron below the `lg` breakpoint

* [#2673](https://github.com/servicetitan/hammer/pull/2673) [`3ae742e`](https://github.com/servicetitan/hammer/commit/3ae742e736101d38596d1c3d08c89c95d324656f) Thanks [@tounsoo](https://github.com/tounsoo)! - **BETA** \[FilterBar] Fix `dateList` filter replacing its own label with the selected option's label on the trigger button. The filter label is now retained and the selection appended, e.g. `Start Date: Last 7 Days (Aug 6 – Aug 11, 2026)`, matching the other filter types. The drawer field is unchanged.

* Updated dependencies \[[`b263157`](https://github.com/servicetitan/hammer/commit/b263157ce18e33b911962f673237874261d13496)]:
  * @servicetitan/hammer-token\@3.2.0
  * @servicetitan/hammer-icon\@1.3.0

## 3.9.0

### Minor Changes

* [#2606](https://github.com/servicetitan/hammer/pull/2606) [`664e8cc`](https://github.com/servicetitan/hammer/commit/664e8cc96b8b0729d33438830125e018c1cb7803) Thanks [@cursor](https://github.com/apps/cursor)! - \[Calendar] Deprecate `focusedDate` in favor of `defaultFocusedDate`. `focusedDate` never reliably controlled the initial view.

### Patch Changes

* [#2532](https://github.com/servicetitan/hammer/pull/2532) [`2a87e99`](https://github.com/servicetitan/hammer/commit/2a87e997a4ff59a10ebc264b6ce52049d9f25c04) Thanks [@cursor](https://github.com/apps/cursor)! - \[Tab] Fix overflow scroll buttons covering tabs and scroll the tab list on click

* [#2607](https://github.com/servicetitan/hammer/pull/2607) [`79b0364`](https://github.com/servicetitan/hammer/commit/79b0364c86b975ec6c72c00de3bdd2f1423a74a4) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[Combobox, DateFieldRange, DateFieldSingle, DateFieldYearless, DateFieldYearlessRange, MultiSelectField, SelectField, TimeField] Close attached menus when becoming `disabled`

* [#2607](https://github.com/servicetitan/hammer/pull/2607) [`79b0364`](https://github.com/servicetitan/hammer/commit/79b0364c86b975ec6c72c00de3bdd2f1423a74a4) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[TreeSelectField] Close attached menus when becoming `disabled`

* [#2524](https://github.com/servicetitan/hammer/pull/2524) [`fc611b6`](https://github.com/servicetitan/hammer/commit/fc611b6b5b3bc3620408437c5ef407cc00d90efa) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Flex, Grid] Fix font-family inheritance to respect parent typography context

* [#2620](https://github.com/servicetitan/hammer/pull/2620) [`786cb51`](https://github.com/servicetitan/hammer/commit/786cb512460427412803bda22cfe2907a0722862) Thanks [@joefiorini](https://github.com/joefiorini)! - **BETA** \[TreeSelectMenu, TreeSelectField] Fix dragging the tree panel's scrollbar closing the popover mid-drag. The panel wasn't a focusable click target, so a scrollbar-thumb drag blurred the search field to nothing and `OptionsPopover` treated it as an outside interaction. The panel now gets `tabIndex={-1}`, matching `MultiSelectMenu`'s scroller.

## 3.8.0

### Minor Changes

* [#2543](https://github.com/servicetitan/hammer/pull/2543) [`8c976e5`](https://github.com/servicetitan/hammer/commit/8c976e54918b55ccefbf62c1c1ac6d3ec3735c3b) Thanks [@tnathanjames](https://github.com/tnathanjames)! - \[Drawer] Add optional `actions` prop to `Drawer.Header`

### Patch Changes

* [#2535](https://github.com/servicetitan/hammer/pull/2535) [`b3a79db`](https://github.com/servicetitan/hammer/commit/b3a79db8dd1c026e98a03ac51e5ad2d05acbf153) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[DateFieldYearless, DateFieldYearlessRange] Fix month dropdown labels shifting by one month in timezones east of UTC

* [#2555](https://github.com/servicetitan/hammer/pull/2555) [`6377024`](https://github.com/servicetitan/hammer/commit/63770245d2fc59103f0c46579f1d04cf890428f5) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[SelectField] Fix clear button vertical alignment for `disableSearch` across sizes

## 3.7.1

### Patch Changes

* [#2516](https://github.com/servicetitan/hammer/pull/2516) [`7dc385a`](https://github.com/servicetitan/hammer/commit/7dc385aea9adaf2bf213991e20f99c7a3e1b320f) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[MultiSelectField, MultiSelectMenu] Fix Select All checkbox not updating in confirmation mode

## 3.7.0

### Minor Changes

* [#2503](https://github.com/servicetitan/hammer/pull/2503) [`16bb0b2`](https://github.com/servicetitan/hammer/commit/16bb0b28d6f50871612ec80b5d0c2c3ddaf92671) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[MultiSelectField, MultiSelectMenu, SelectField, SelectMenu] Allow `addItemLabel` callbacks to return `null`/`undefined` to hide the add-new button for the current search text (for example, until a well-formed email is typed)

## 3.6.0

### Minor Changes

* [#2495](https://github.com/servicetitan/hammer/pull/2495) [`3cf8f42`](https://github.com/servicetitan/hammer/commit/3cf8f426a72bcca09d34118e9dde23854764bbbe) Thanks [@tounsoo](https://github.com/tounsoo)! - **BETA** \[RichTextEditor] Added markdown support (`contentType="markdown"` to parse `value`/`defaultValue` as markdown, `onMarkdownChange` to emit markdown on every update) via TipTap's official `@tiptap/markdown` extension, which is BETA upstream — known limitations are single-child-per-cell tables and possible loss of HTML comments on round-trip.

  **BETA** \[RichTextEditor] Added an `extensions` prop to inject custom TipTap extensions (e.g. a custom node type); an extension sharing a built-in's name overrides it.

  **BETA** \[RichTextEditor] Restricted the default Image extension's `src` to `http:`/`https:` only, closing off tracking-pixel hosts and non-http(s) schemes previously allowed unrestricted. This is a behavior change for existing `allowMedia` consumers relying on other schemes — pass the new `isAllowedImageSrc` prop to opt back in.

### Patch Changes

* [#2467](https://github.com/servicetitan/hammer/pull/2467) [`6540bd5`](https://github.com/servicetitan/hammer/commit/6540bd53cff88adb1b3f85c5aaed6d2716a7a495) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Listbox] Fix TypeScript error when passing an array to `selected` in controlled multiselect mode with `items` prop. Fix controlled mode updating internal state on click and keyboard selection instead of deferring to the `selected` prop.

* [#2496](https://github.com/servicetitan/hammer/pull/2496) [`a48f5ad`](https://github.com/servicetitan/hammer/commit/a48f5ad88bf44ae1943a26b2513b3687218a5988) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Icon] Fix SVG gradient ID collisions when multiple gradient icons render on the same page

* [#2487](https://github.com/servicetitan/hammer/pull/2487) [`f492511`](https://github.com/servicetitan/hammer/commit/f492511dcc26c88e38633439c185bc1d1a3b6de3) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Dialog] Fix nested `Dialog` inheriting an ancestor dialog's `--a2-mod-dialog-max-width`, causing it to render at the wrong max-width instead of its own size default

* [#2500](https://github.com/servicetitan/hammer/pull/2500) [`775a836`](https://github.com/servicetitan/hammer/commit/775a836d4b0385460c64ae1c86c10625479ead2f) Thanks [@jarizast](https://github.com/jarizast)! - **BETA** \[DataTable] Fix the ascending → descending → none sort cycle collapsing to a single state for nullable columns under server-side (async) sorting by pinning `sortDescFirst` to `false` when `manualSorting` is enabled

## 3.5.0

### Minor Changes

* [#2490](https://github.com/servicetitan/hammer/pull/2490) [`386ffa2`](https://github.com/servicetitan/hammer/commit/386ffa2528461e07bbc1e7faa643ee2a9de88acd) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[MultiSelectField, MultiSelectMenu] Support a function for `selectAll` / `selectFiltered` `checkState` so the bulk-action checkbox can reflect the current selection (e.g. `checked` when all are selected, `indeterminate` when some are). The function receives the current selection (the confirmation draft when confirmation is enabled, otherwise the committed value). This also enables per-cell Select All state for DataTable's `multiselect-async` editable cells, where the column-level config is shared across cells.

### Patch Changes

* [#2494](https://github.com/servicetitan/hammer/pull/2494) [`b975af7`](https://github.com/servicetitan/hammer/commit/b975af7a1bbb41b0a65e4689df23539b472b16ca) Thanks [@tounsoo](https://github.com/tounsoo)! - **BETA** \[InteractiveCard] Merge a `ref` passed via `wrapperProps` with the component's forwarded ref, so consumers can access the wrapper element even when using `wrapperProps.ref`.

* [#2482](https://github.com/servicetitan/hammer/pull/2482) [`673fe8f`](https://github.com/servicetitan/hammer/commit/673fe8fbed725235742b85679d576fa2236aa3c1) Thanks [@AdamLantz](https://github.com/AdamLantz)! - `Calendar`: fix the month and year pickers closing popover hosts (e.g. `FilterBar`'s date-range filter) when a month or year is selected. The picker cards are label-based and not natively focusable, so a mousedown could blur focus to `document.body` and trigger the popover's focus-out close before the selection applied. The cards now cancel their default mousedown to preserve focus, matching the existing footer-button behavior.

* [#2493](https://github.com/servicetitan/hammer/pull/2493) [`2f30cf0`](https://github.com/servicetitan/hammer/commit/2f30cf0dc01b9538f7b2d1e20a5887c84f506b4b) Thanks [@jarizast](https://github.com/jarizast)! - \[DataTable] Fix column sort occasionally triggering after column resize

* [#2494](https://github.com/servicetitan/hammer/pull/2494) [`b975af7`](https://github.com/servicetitan/hammer/commit/b975af7a1bbb41b0a65e4689df23539b472b16ca) Thanks [@tounsoo](https://github.com/tounsoo)! - \[SideNav] Fix a crash when rendering `SideNavProvider` during server-side rendering (e.g. Next.js SSR), where `window` is not defined.

* [#2486](https://github.com/servicetitan/hammer/pull/2486) [`202f32e`](https://github.com/servicetitan/hammer/commit/202f32efba40947f4c22b0d3e0beab4069e07b80) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[FilterBar] Add `minDate`, `maxDate`, and `unavailable` support to `date` and `dateRange` filters so consumers can restrict which dates are selectable in both the toolbar popover and the drawer. Typing a value outside those constraints is still allowed but now surfaces an error message on the field, with an optional `getErrorMessage` callback to override the default copy.

* [#2489](https://github.com/servicetitan/hammer/pull/2489) [`d8a1fcc`](https://github.com/servicetitan/hammer/commit/d8a1fcc9af0c1251c00ceb79834e3b9aa2c3abdc) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[FilterBar] Fix the calendar overlapping the Clear / Apply / Cancel footer when the popover is height-constrained. The popover body now scrolls its content instead of letting it spill over the fixed footer.

* [#2488](https://github.com/servicetitan/hammer/pull/2488) [`01df630`](https://github.com/servicetitan/hammer/commit/01df63020a5a27c56bd116db9b5448fb74a7c449) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - \[AnvilProvider] `cssUtils` is deprecated and no longer loads stylesheets — import the CSS utility stylesheets you need directly instead.

* [#2475](https://github.com/servicetitan/hammer/pull/2475) [`d90ef2a`](https://github.com/servicetitan/hammer/commit/d90ef2a299e2e0089e9ab65bf45c8edfe78a502d) Thanks [@tounsoo](https://github.com/tounsoo)! - **BETA** \[FilterBar] Add `search` filter type for a pinned, always-visible search field

* [#2494](https://github.com/servicetitan/hammer/pull/2494) [`b975af7`](https://github.com/servicetitan/hammer/commit/b975af7a1bbb41b0a65e4689df23539b472b16ca) Thanks [@tounsoo](https://github.com/tounsoo)! - \[MultiSelectField, SelectField] Fix a React console warning caused by passing the `popovertarget` attribute in lowercase instead of the camelCase `popoverTarget` prop React expects.

## 3.4.2

### Patch Changes

* [#2473](https://github.com/servicetitan/hammer/pull/2473) [`07b379d`](https://github.com/servicetitan/hammer/commit/07b379d01c3ccfeb2a2df159a5071f36be66b859) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[AnvilProvider] Fix `cssUtils` prop not loading styles due to incorrect import paths in published package

* [#2469](https://github.com/servicetitan/hammer/pull/2469) [`7d8fda9`](https://github.com/servicetitan/hammer/commit/7d8fda900972af51ffb217a05b5deedb9c9afb8a) Thanks [@tounsoo](https://github.com/tounsoo)! - \[PageHeader] Fix `icon` and `className` not forwarded to `Menu.Item` in secondary actions overflow menu

## 3.4.1

### Patch Changes

* [#2448](https://github.com/servicetitan/hammer/pull/2448) [`e53dab6`](https://github.com/servicetitan/hammer/commit/e53dab6877ed9ed0a0a01697eeda1f01553e6bac) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Button] Fix focus ring appearing on mouse click by restricting it to `:focus-visible`

* [#2458](https://github.com/servicetitan/hammer/pull/2458) [`d35066d`](https://github.com/servicetitan/hammer/commit/d35066d4075a66e506b0d528023d6fb8d0553bc2) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - **BETA** \[FilterBar] Add `excludeDefaultOptions` prop to `dateList` filters for omitting built-in default options

* [#2448](https://github.com/servicetitan/hammer/pull/2448) [`e53dab6`](https://github.com/servicetitan/hammer/commit/e53dab6877ed9ed0a0a01697eeda1f01553e6bac) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Popover] On a keyboard close (e.g. Escape), focus now returns to the trigger with a visible focus ring, matching `:focus-visible` semantics; pointer closes restore focus without a ring. Applies to both the stable `Popover` and the beta popover.

* [#2459](https://github.com/servicetitan/hammer/pull/2459) [`c398449`](https://github.com/servicetitan/hammer/commit/c398449fc4f5b6681f9406ccbd3896b10713df21) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[DataTable] Fix server-paginated tables getting stuck in a perpetual loading state by memoizing the controlled `sorting` reference

## 3.4.0

### Minor Changes

* [#2437](https://github.com/servicetitan/hammer/pull/2437) [`7eaf679`](https://github.com/servicetitan/hammer/commit/7eaf6799ae352e17b117675013164c9d74212c7a) Thanks [@jsphstls](https://github.com/jsphstls)! - `Overflow`: add a `contentRef` prop that forwards a ref to the scrollable content element (the inner element with `overflow: auto`). The component's own `ref` still points at the outer wrapper, which does not scroll, so use `contentRef` when an integration must target the actual scroller — e.g. a virtualizer's `getScrollElement`, an `IntersectionObserver` sentinel, or programmatic scrolling.

### Patch Changes

* [#2447](https://github.com/servicetitan/hammer/pull/2447) [`b49ded5`](https://github.com/servicetitan/hammer/commit/b49ded52333b9d65a73c869298b08d787b37802a) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Icons, AiMark] Fix gradient SVG ID collisions when multiple AI mark icons render on the same page

## 3.3.0

### Minor Changes

* [#2428](https://github.com/servicetitan/hammer/pull/2428) [`9eb595b`](https://github.com/servicetitan/hammer/commit/9eb595be23bd648c339b58a331f3b60d4a0d7f15) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Combobox] Deprecate in favor of SelectField and MultiSelectField

* [#2423](https://github.com/servicetitan/hammer/pull/2423) [`e536233`](https://github.com/servicetitan/hammer/commit/e53623374fc9300964e1c758d48a7bf4d1d5f5fa) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[AnvilProvider] Add `cssUtils` prop to automatically load CSS utility stylesheets

* [#2428](https://github.com/servicetitan/hammer/pull/2428) [`9eb595b`](https://github.com/servicetitan/hammer/commit/9eb595be23bd648c339b58a331f3b60d4a0d7f15) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[MultiSelectField, MultiSelectMenu, SelectField, SelectMenu] Promote select components from beta to the stable package export; retain deprecated beta re-exports until Anvil2 4.0

### Patch Changes

* [#2435](https://github.com/servicetitan/hammer/pull/2435) [`e975960`](https://github.com/servicetitan/hammer/commit/e975960082858a46e7a49d01c4bb9628cb39ddb7) Thanks [@cursor](https://github.com/apps/cursor)! - \[Combobox] Hide dropdown caret when `disablePopover` is `true`

* [#2419](https://github.com/servicetitan/hammer/pull/2419) [`daaa703`](https://github.com/servicetitan/hammer/commit/daaa703508f434218151b09ec3e09c99e7f7ba2d) Thanks [@cursor](https://github.com/apps/cursor)! - **BETA** \[DataTable] Fix header, footer, and pagination z-index leaking outside the table container

## 3.2.0

### Minor Changes

* [#2386](https://github.com/servicetitan/hammer/pull/2386) [`efd6121`](https://github.com/servicetitan/hammer/commit/efd6121759713cefb12e51387183bc97c0c3aec6) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - \[NumberField, TextField] Add `isHighlighted` prop that applies a subdued primary background to draw attention to the field

### Patch Changes

* [#2386](https://github.com/servicetitan/hammer/pull/2386) [`efd6121`](https://github.com/servicetitan/hammer/commit/efd6121759713cefb12e51387183bc97c0c3aec6) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[MultiSelectField, SelectField] Add `isHighlighted` prop that applies a subdued primary background to draw attention to the field

* [#2415](https://github.com/servicetitan/hammer/pull/2415) [`58eb789`](https://github.com/servicetitan/hammer/commit/58eb78970e47ffeabbe57a97c345cdbe8edd4a01) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Details] Fix incorrect content padding when Details components are nested

* [#2413](https://github.com/servicetitan/hammer/pull/2413) [`1c606c5`](https://github.com/servicetitan/hammer/commit/1c606c5f0bd4d7416cb0f4b6fcb409c4b6377d6b) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[TreeSelectField] Add `getChipProps` callback to customize chip props (color, icon, avatar, etc.) per selected option

* [#2386](https://github.com/servicetitan/hammer/pull/2386) [`efd6121`](https://github.com/servicetitan/hammer/commit/efd6121759713cefb12e51387183bc97c0c3aec6) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[TypeaheadTextField] Add new component for text input with inline suggestions shown in a popover

## 3.1.0

### Minor Changes

* [#2407](https://github.com/servicetitan/hammer/pull/2407) [`5e46d4f`](https://github.com/servicetitan/hammer/commit/5e46d4f7760c8f4c3374523f9777f34b61f72270) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - **BETA** \[DataTable] Add `onClickRow` prop, called with the clicked row's id when a row is clicked or activated with `Enter`

### Patch Changes

* [#2378](https://github.com/servicetitan/hammer/pull/2378) [`f13b003`](https://github.com/servicetitan/hammer/commit/f13b0036669dc8ba3e566de88374b4487bb9891b) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - \[Page] Fix "Maximum update depth exceeded" crash when resizing a page with `Page.Content`.

* [#2372](https://github.com/servicetitan/hammer/pull/2372) [`f8e27ae`](https://github.com/servicetitan/hammer/commit/f8e27ae598b1a2c4900cd2dc16e6efcb3a11fbb9) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[chipsFormatter] When `truncateChips: true`:
  * Hovering the `+N` overflow chip now shows a tooltip listing every hidden chip label.
  * Truncation is computed in a hidden off-screen measurement cell, so the visible cell only ever paints the final state. Filtering or re-rendering with new chip sets no longer flickers while widths are calculated.
  * The hidden measurement cell no longer extends the table's scroll area. It previously contributed its full single-row width to the scroll container's overflow region, letting the table scroll well past its real columns.

* Updated dependencies \[[`2c042ed`](https://github.com/servicetitan/hammer/commit/2c042ed13ee7c83bff4607020c5fe4b2fa7b7a67)]:
  * @servicetitan/hammer-token\@3.1.0

## 3.0.9

### Patch Changes

* [#2391](https://github.com/servicetitan/hammer/pull/2391) [`168c5ce`](https://github.com/servicetitan/hammer/commit/168c5ced0505d26de116340a7a799563bacc8be9) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Divider] Fix horizontal `spacing` values for `half` and `1` to match size tokens

* [#2376](https://github.com/servicetitan/hammer/pull/2376) [`48c651d`](https://github.com/servicetitan/hammer/commit/48c651d42661d7e760a70ec651d2c12790239302) Thanks [@rgdelato](https://github.com/rgdelato)! - **BETA** \[DataTable] Remove row active state

* [#2376](https://github.com/servicetitan/hammer/pull/2376) [`48c651d`](https://github.com/servicetitan/hammer/commit/48c651d42661d7e760a70ec651d2c12790239302) Thanks [@rgdelato](https://github.com/rgdelato)! - **BETA** \[DataTable] Add row hover state

* [#2400](https://github.com/servicetitan/hammer/pull/2400) [`bd7c4c5`](https://github.com/servicetitan/hammer/commit/bd7c4c5e7f6e1715c80b1fbc7b894e7a8ea8bead) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - **BETA** \[FilterBar] Defer mounting date filter popover content until the popover is open, avoiding unnecessary rendering of the date picker before it is shown

* [#2394](https://github.com/servicetitan/hammer/pull/2394) [`7401759`](https://github.com/servicetitan/hammer/commit/74017590bbe5ef4e62771816c2e3701e16800bbb) Thanks [@ericag1985](https://github.com/ericag1985)! - **BETA** \[DataTable] Hide footer and pagination when the table is empty

* [#2385](https://github.com/servicetitan/hammer/pull/2385) [`a0223e7`](https://github.com/servicetitan/hammer/commit/a0223e78626edcdeaf9587131ccabe152f109484) Thanks [@rgdelato](https://github.com/rgdelato)! - **BETA** \[DataTable] Allow custom editable cells to accept `null` and `undefined` values

* [#2402](https://github.com/servicetitan/hammer/pull/2402) [`ba729d3`](https://github.com/servicetitan/hammer/commit/ba729d32d866bf535246917e00698ded0f31356e) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[htmlFormatter, markdownFormatter] Add support for strikethrough (`~~`, `s`/`strike`/`del`) and headings (`# ` through `### `, `h1`/`h2`/`h3`). `htmlFormatter` now renders underline (`u`), font size (`span`), and text alignment (`text-align` on `p`/`h1`-`h3`) as plain text, preserving their content instead of dropping it.

* [#2295](https://github.com/servicetitan/hammer/pull/2295) [`16ac423`](https://github.com/servicetitan/hammer/commit/16ac4232438c06e2462bbb4be4bf681441d4a9fb) Thanks [@rgdelato](https://github.com/rgdelato)! - **BETA** \[DataTable] Add drag and resize functionality to overflow/editable surface

## 3.0.8

### Patch Changes

* [#2382](https://github.com/servicetitan/hammer/pull/2382) [`e8a385d`](https://github.com/servicetitan/hammer/commit/e8a385dffeb21f6954787b08eead3e46a1e0a686) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - \[Popover, Tooltip, Toast, OptionsPopover] Apply the anvil2 theme scope (`.anvil2` + `theme-core`) to portaled top-layer (`popover`) content so popovers, tooltips, toasts, and option popovers keep anvil2 styling and tokens instead of rendering unstyled when they escape the theme provider.

  \[Combobox] Wrap custom `Combobox.Empty` content in the same `.empty` container as the built-in empty state so consumer-provided messages get consistent padding and alignment.

* [#2271](https://github.com/servicetitan/hammer/pull/2271) [`ca16764`](https://github.com/servicetitan/hammer/commit/ca1676472f3ea75b1269192c506588a75886715a) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[TreeSelectField] Add component for hierarchical tree selection with async loading, cascading selection, virtualization, search, and keyboard navigation

* [#2373](https://github.com/servicetitan/hammer/pull/2373) [`9752e52`](https://github.com/servicetitan/hammer/commit/9752e523a4c11f7f3a14ff0df510a643a248a2d4) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[FilterBar] Fix `numericRange` popover closing between keystrokes in uncontrolled mode (`controlledFiltering={false}`), which made multi-digit bounds impossible to enter.

* [#2373](https://github.com/servicetitan/hammer/pull/2373) [`9752e52`](https://github.com/servicetitan/hammer/commit/9752e523a4c11f7f3a14ff0df510a643a248a2d4) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[FilterBar] Add `textInput` filter type — a `TextField` with optional `placeholder`, `maxLength`, and `showCounter` (requires a concrete `maxLength`). Long values are ellipsised in the closed-button label.

* [#2379](https://github.com/servicetitan/hammer/pull/2379) [`6c75215`](https://github.com/servicetitan/hammer/commit/6c75215a3c4b9277d1e982367e7eebd5ac26cb48) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[FilterBar] Add `tree` and `asyncTree` filter types for hierarchical selection.

* [#2355](https://github.com/servicetitan/hammer/pull/2355) [`e9de657`](https://github.com/servicetitan/hammer/commit/e9de657bff36a0b217ff98f01a822a3f35050826) Thanks [@rgdelato](https://github.com/rgdelato)! - **BETA** \[DataTable] Revert stricter type for `DataTableRowData`

* [#2271](https://github.com/servicetitan/hammer/pull/2271) [`ca16764`](https://github.com/servicetitan/hammer/commit/ca1676472f3ea75b1269192c506588a75886715a) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[TreeSelectMenu] Add component for hierarchical tree selection attached to a custom trigger element, with async loading, client-side filtering via `TreeSelectMenuSync`, cascading selection, virtualization, search, and keyboard navigation.

* [#2379](https://github.com/servicetitan/hammer/pull/2379) [`6c75215`](https://github.com/servicetitan/hammer/commit/6c75215a3c4b9277d1e982367e7eebd5ac26cb48) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[TreeSelectMenu] Add `confirmation` and `clear` props, mirroring `MultiSelectMenu`.

## 3.0.7

### Patch Changes

* [#2365](https://github.com/servicetitan/hammer/pull/2365) [`0d8b5ac`](https://github.com/servicetitan/hammer/commit/0d8b5ac22dc335c623c5bcd38da5deb9a86c02d1) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[MultiSelectMenu, MultiSelectMenuSync, SelectMenu, SelectMenuSync] Add `clear` config prop that renders a Clear button in the menu footer; presence of the prop enables the button, omit to suppress

* [#2365](https://github.com/servicetitan/hammer/pull/2365) [`0d8b5ac`](https://github.com/servicetitan/hammer/commit/0d8b5ac22dc335c623c5bcd38da5deb9a86c02d1) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[FilterBar] Add a Clear button to filter popover footers. Always on for `singleSelect`, `asyncSelect`, `multiSelect`, `asyncMultiSelect`, `date`, `dateRange`, and `dateList`. Clear commits an empty value immediately and closes the menu.

* [#2370](https://github.com/servicetitan/hammer/pull/2370) [`7b75a84`](https://github.com/servicetitan/hammer/commit/7b75a841d284678d31d3f24ae5c1c358bbe0bd6a) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[FilterBar] Align the `custom`, `date`, `dateRange`, and `dateList` filter popover shell with the menu-based filter types. Popover sizing rules, padding, and the footer actions now match selection filters, eliminating visual drift.

* [#2350](https://github.com/servicetitan/hammer/pull/2350) [`ebd6b58`](https://github.com/servicetitan/hammer/commit/ebd6b58f3a22d8f7f19f75d90e4360b1ef97df44) Thanks [@ericag1985](https://github.com/ericag1985)! - **BETA** \[FilterBar] Add `drawerOnly` flag to keep a filter exclusively in the drawer; the "All Filters" button now only appears when a filter is unreachable from the toolbar

* [#2367](https://github.com/servicetitan/hammer/pull/2367) [`4719b63`](https://github.com/servicetitan/hammer/commit/4719b633b8f937bb24f9caa2d7794bc85529ff71) Thanks [@hbartlett-st](https://github.com/hbartlett-st)! - **BETA** \[FilterBar/FilterDrawer] Add `numericRange` filter type with min/max `NumberField` inputs, optional `currency`/`percentage` decorator `mode`, `minValue`/`maxValue` clamping, and `inclusiveBounds` for toggling between `≥`/`≤` and `>`/`<` bound semantics.

* [#2364](https://github.com/servicetitan/hammer/pull/2364) [`f2f294d`](https://github.com/servicetitan/hammer/commit/f2f294d68b8b05aaa84c9ed3336439ecd5c2ecd0) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[FilterBar] Add `asyncSelect` and `asyncMultiSelect` filter types, supporting the full feature set of the `SelectMenu` and `MultiSelectMenu` components, respectively.

* [#2364](https://github.com/servicetitan/hammer/pull/2364) [`f2f294d`](https://github.com/servicetitan/hammer/commit/f2f294d68b8b05aaa84c9ed3336439ecd5c2ecd0) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[FilterBar]: **Breaking** rework of `singleSelect` / `multiSelect` filter types to align with `SelectMenuSync` and `MultiSelectMenuSync` APIs. Field renames (`items` → `options`, `selectedItem` → `selectedOption`, `selectedItems` → `selectedOptions`); the `Item` generic is removed (use the `SelectMenuOption` shape with `extra` for custom metadata); `hasSearch` / `onSearch` / `onSearchClear` / `searchValue` are removed — client-side filtering is automatic via match-sorter, override with the new `filter` prop. See the [migration guide](https://anvil.servicetitan.com/docs/web/components/filter-bar/beta-changes/select-filters-to-sync).

* [#2352](https://github.com/servicetitan/hammer/pull/2352) [`ef51a6e`](https://github.com/servicetitan/hammer/commit/ef51a6eb45281f1226019f53697c50ff56b2c9a1) Thanks [@ericag1985](https://github.com/ericag1985)! - **BETA** \[FilterBar] Remove the `overflow` prop; FilterBar always wraps. Shift the drawer-only collapse breakpoint from 768px to 640px. Add `disableCollapse` prop to keep filters inline at every container width. The `id` prop on `FilterToggleButton` now lands on the rendered `<button>` element.

* [#2317](https://github.com/servicetitan/hammer/pull/2317) [`28f1bf2`](https://github.com/servicetitan/hammer/commit/28f1bf27cbf5ed070865cef818ef8bc06f922081) Thanks [@rgdelato](https://github.com/rgdelato)! - **BETA** \[DataTable] Add cursor-style pagination support

* [#2366](https://github.com/servicetitan/hammer/pull/2366) [`4a60780`](https://github.com/servicetitan/hammer/commit/4a6078075c9d55272ed116010c37f4e67e41e8ec) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[SavedFiltersButton] Add new standalone beta component for managing saved filter presets. Designed to compose with `FilterBar`.

* [#2363](https://github.com/servicetitan/hammer/pull/2363) [`b2cc770`](https://github.com/servicetitan/hammer/commit/b2cc7708acefe12035a821175e104abf01b889b1) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[MultiSelectMenu, MultiSelectMenuSync] Add opt-in `confirmation` prop. When enabled, the menu buffers selection as a draft and only commits on Apply. `MultiSelectMenu` and `MultiSelectField` also accept a new `compute` variant of `selectAll` / `selectFiltered` that integrates bulk actions with the confirmation draft and supports async resolution (the menu shows a loading state while the returned promise is pending); the existing `onClick` shape still works for the non-confirmation case.

* [#2353](https://github.com/servicetitan/hammer/pull/2353) [`e5e7ae3`](https://github.com/servicetitan/hammer/commit/e5e7ae3c8400fc610d2d9e15384bcc8944df8d99) Thanks [@rgdelato](https://github.com/rgdelato)! - \[Combobox, ComboboxSelect] Bugfix for performance issues with a large number of selected items

* [#2358](https://github.com/servicetitan/hammer/pull/2358) [`1d17553`](https://github.com/servicetitan/hammer/commit/1d17553958fa84e1b2190f63d19307d2ea47c577) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[MultiSelectField] Fix incorrect box-shadow appearing above input field

## 3.0.6

### Patch Changes

* [#2346](https://github.com/servicetitan/hammer/pull/2346) [`9a175d8`](https://github.com/servicetitan/hammer/commit/9a175d85048798a0f21c5162fb54d7effd5539c7) Thanks [@ericag1985](https://github.com/ericag1985)! - **BETA** \[SelectField] Fix `disableSearch` trigger height and padding to match the input-based trigger

* [#2343](https://github.com/servicetitan/hammer/pull/2343) [`8158aaa`](https://github.com/servicetitan/hammer/commit/8158aaa9d9845b47ba4b1e10b951fcd21c9620a3) Thanks [@ericag1985](https://github.com/ericag1985)! - \[Checkbox, Radio] Add `cursor: pointer` to label

* [#2346](https://github.com/servicetitan/hammer/pull/2346) [`9a175d8`](https://github.com/servicetitan/hammer/commit/9a175d85048798a0f21c5162fb54d7effd5539c7) Thanks [@ericag1985](https://github.com/ericag1985)! - **BETA** \[FilterBar] Add `dateList` filter type for picking from a list of date buckets

* [#2344](https://github.com/servicetitan/hammer/pull/2344) [`436a99b`](https://github.com/servicetitan/hammer/commit/436a99b68877ba4be6e0d4c9c3b77980400f8fdf) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - \[DaysOfTheWeek] Fix clipped focus ring on day buttons

* [#2337](https://github.com/servicetitan/hammer/pull/2337) [`f8a1179`](https://github.com/servicetitan/hammer/commit/f8a1179ce2aa42b335be000aa01ff1f53a3f8757) Thanks [@ericag1985](https://github.com/ericag1985)! - \[Dialog] Fix scrollbar overlapping rounded corners by moving scrolling to an inner element inset from the container edges

* [#2338](https://github.com/servicetitan/hammer/pull/2338) [`13c5fec`](https://github.com/servicetitan/hammer/commit/13c5fecea86cf8247d681ec95617e0f8f7e452b3) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Icons] Update 13 custom ServiceTitan icon SVGs to union vectors and remove stale `fill`/`clip-path` attributes so they render correctly with the `Icon` `color` prop

* [#2343](https://github.com/servicetitan/hammer/pull/2343) [`8158aaa`](https://github.com/servicetitan/hammer/commit/8158aaa9d9845b47ba4b1e10b951fcd21c9620a3) Thanks [@ericag1985](https://github.com/ericag1985)! - \[Tooltip] Remove `position: absolute !important` that broke scrolling on positioned ancestors

## 3.0.5

### Patch Changes

* [#2336](https://github.com/servicetitan/hammer/pull/2336) [`0277423`](https://github.com/servicetitan/hammer/commit/027742311d21866a3916d4300ece542b0285dd13) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - **BETA** \[FilterBar] Update filter drawer combobox `SearchField` and `SelectTrigger` to use `medium` size instead of `small`

* [#2313](https://github.com/servicetitan/hammer/pull/2313) [`13093b7`](https://github.com/servicetitan/hammer/commit/13093b77993bfaa76e5137a47686103c44923aa1) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[MultiSelectField, MultiSelectMenu, SelectField, SelectMenu] Add `addItemLabel` and `onAddNewItem` props to render a persistent "Add new item" affordance below the option list.

* [#2324](https://github.com/servicetitan/hammer/pull/2324) [`e4a8d56`](https://github.com/servicetitan/hammer/commit/e4a8d560fe32621b4db8da52dddd543168013fb7) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - \[AnvilProvider] Fix unstyled Anvil2 components inside Anvil1 takeovers (Modal, Dialog, Drawer) by mirroring the `.anvil2` class onto `document.body`.

## 3.0.4

### Patch Changes

* [#2297](https://github.com/servicetitan/hammer/pull/2297) [`75aafc5`](https://github.com/servicetitan/hammer/commit/75aafc512434cf7a8f1f0699d8f25ded444bba8a) Thanks [@ericag1985](https://github.com/ericag1985)! - **BETA** \[DataTable] Fix keyboard a11y for cells with actionable elements

* [#2298](https://github.com/servicetitan/hammer/pull/2298) [`8d8529b`](https://github.com/servicetitan/hammer/commit/8d8529bf32cd3ab66db9ee7ddff059ff69d0d985) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - **BETA** \[MultiSelectField, SelectField] Fix input box-shadow and dropdown outline leaks after `reset()` mixin no longer applies `all: unset`

* [#2274](https://github.com/servicetitan/hammer/pull/2274) [`8786d1a`](https://github.com/servicetitan/hammer/commit/8786d1a215ee9e6fa70c7c8fbf9644020592058d) Thanks [@rgdelato](https://github.com/rgdelato)! - Bump versions of TypeScript to `^6.0.3`

* [#2298](https://github.com/servicetitan/hammer/pull/2298) [`8d8529b`](https://github.com/servicetitan/hammer/commit/8d8529bf32cd3ab66db9ee7ddff059ff69d0d985) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Components] Remove blanket `all: unset` from the shared SCSS `reset()` mixin used across component surfaces.

* [#2298](https://github.com/servicetitan/hammer/pull/2298) [`8d8529b`](https://github.com/servicetitan/hammer/commit/8d8529bf32cd3ab66db9ee7ddff059ff69d0d985) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Breadcrumbs, Link] Fix focus and hover styles for links.

* [#2299](https://github.com/servicetitan/hammer/pull/2299) [`3be5f1a`](https://github.com/servicetitan/hammer/commit/3be5f1a00e8733d4d80ecde5745f53059236bffa) Thanks [@ericag1985](https://github.com/ericag1985)! - **BETA** \[RichTextEditor] Stabilize drag-handle callbacks so the drag plugin no longer re-registers on every render, which was closing the mention popover when `allowDragDrop` and `allowMention` were both enabled in controlled mode

* [#2299](https://github.com/servicetitan/hammer/pull/2299) [`3be5f1a`](https://github.com/servicetitan/hammer/commit/3be5f1a00e8733d4d80ecde5745f53059236bffa) Thanks [@ericag1985](https://github.com/ericag1985)! - **BETA** \[RichTextEditor] Set `font-family` on the editor body so content uses the Anvil2 paragraph font instead of the user-agent default

* [#2280](https://github.com/servicetitan/hammer/pull/2280) [`f7fe2ca`](https://github.com/servicetitan/hammer/commit/f7fe2ca18ce179a89ee606608f8fadd331efb003) Thanks [@rgdelato](https://github.com/rgdelato)! - **BETA** \[DataTable] Add `overflow` option to display full cell contents

* [#2298](https://github.com/servicetitan/hammer/pull/2298) [`8d8529b`](https://github.com/servicetitan/hammer/commit/8d8529bf32cd3ab66db9ee7ddff059ff69d0d985) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Button, List, ListView, Menu, Overflow, Popover, SideNav, Stepper, Switch, Tab, Text, TextField, Tooltip] Fix UA style leaks (input shadow, outline, line-height, text-align, popover positioning, heading bidi) after `reset()` mixin no longer applies `all: unset`

* [#2298](https://github.com/servicetitan/hammer/pull/2298) [`8d8529b`](https://github.com/servicetitan/hammer/commit/8d8529bf32cd3ab66db9ee7ddff059ff69d0d985) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[Breadcrumbs] Update `breadcrumb.link.foreground.color` to `foreground.color.default`

* Updated dependencies \[[`8786d1a`](https://github.com/servicetitan/hammer/commit/8786d1a215ee9e6fa70c7c8fbf9644020592058d), [`8d8529b`](https://github.com/servicetitan/hammer/commit/8d8529bf32cd3ab66db9ee7ddff059ff69d0d985)]:
  * @servicetitan/hammer-token\@3.0.2

## 3.0.3

### Patch Changes

* [#2291](https://github.com/servicetitan/hammer/pull/2291) [`2f03aa4`](https://github.com/servicetitan/hammer/commit/2f03aa40969d47175bbcc42e9162c2679ede6a69) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** \[SelectField, MultiSelectField] Add `moreInfo` prop for displaying a tooltip next to the label

* [#2296](https://github.com/servicetitan/hammer/pull/2296) [`5dfc370`](https://github.com/servicetitan/hammer/commit/5dfc3700e14ad5a7842ec36e66197469b6b97cdb) Thanks [@rgdelato](https://github.com/rgdelato)! - **BETA** \[DataTable] Update `chipsFormatter` to default to `"small"` `Chip`s

* [#2306](https://github.com/servicetitan/hammer/pull/2306) [`c47f10b`](https://github.com/servicetitan/hammer/commit/c47f10b2bf8ad14b6d043299c3be67a134e2161e) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[NumberField] Fix `readOnly` allowing value changes via Arrow keys, PageUp/PageDown, and Home/End.

## 3.0.2

### Patch Changes

* [#2289](https://github.com/servicetitan/hammer/pull/2289) [`9d9c1c3`](https://github.com/servicetitan/hammer/commit/9d9c1c3851ed9e6d51a7faaa782ae3d0e5a93313) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - \[CSS Utils] Scope published `a2-*` stylesheet rules under `.anvil2` using the `css-utils-anvil2-scope` plugin in the root `postcss.config.js`, run from `build:css-utils` after `copy-css-utils`, so utilities match Anvil2 component specificity inside `AnvilProvider`.

* [#2201](https://github.com/servicetitan/hammer/pull/2201) [`c0e4ae6`](https://github.com/servicetitan/hammer/commit/c0e4ae60a7c6a3ef269175042a94bf6796260cea) Thanks [@rgdelato](https://github.com/rgdelato)! - **BETA** \[DataTable] Add `custom` editable cell type

* [#2165](https://github.com/servicetitan/hammer/pull/2165) [`f40924e`](https://github.com/servicetitan/hammer/commit/f40924eed94894f2a7a71b53b5f915fa66bc37f0) Thanks [@sasuntitan](https://github.com/sasuntitan)! - **BETA** \[RichTextEditor] Add new `RichTextEditor` component for authoring formatted rich text content

* [#2285](https://github.com/servicetitan/hammer/pull/2285) [`a05cb7f`](https://github.com/servicetitan/hammer/commit/a05cb7f70b9315e993da367f4c1b8bd5487ac05e) Thanks [@ericag1985](https://github.com/ericag1985)! - **BETA** \[InteractiveCard] Fix click handling so nested form controls (Switch, TextField, contenteditable, etc.) receive their own clicks instead of triggering the card action

* Updated dependencies \[[`9d9c1c3`](https://github.com/servicetitan/hammer/commit/9d9c1c3851ed9e6d51a7faaa782ae3d0e5a93313)]:
  * @servicetitan/hammer-token\@3.0.1

## 3.0.1

### Patch Changes

* [#2277](https://github.com/servicetitan/hammer/pull/2277) [`e7f4ecc`](https://github.com/servicetitan/hammer/commit/e7f4ecc3d4d32a3ae61e66bb24725249963191c1) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - Stop emitting the `@layer starter, reset, base, state, application;` ordering statement in component CSS so strict minifiers (e.g. lightningcss) accept the emitted stylesheets.

* [#2265](https://github.com/servicetitan/hammer/pull/2265) [`4c802ea`](https://github.com/servicetitan/hammer/commit/4c802eaefd30149c227d8c48d45305c28965e91d) Thanks [@ericag1985](https://github.com/ericag1985)! - \[Avatar, Dialog, Drawer, Text] Fix `undefined` appearing as a DOM class name when `size="medium"` and no `.medium` CSS class exists

* [#2263](https://github.com/servicetitan/hammer/pull/2263) [`04d03fe`](https://github.com/servicetitan/hammer/commit/04d03fe882417710f07f8d4da8a44efeb8dae6e9) Thanks [@AdamLantz](https://github.com/AdamLantz)! - \[Utilities] Add a handful of missing css-utils

* [#2203](https://github.com/servicetitan/hammer/pull/2203) [`3b48e37`](https://github.com/servicetitan/hammer/commit/3b48e3774fb814283e1f1f278d18d6f9035e4e54) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - **BETA** \[FilterBar] Extract `Toolbar.Filters` into standalone `FilterBar` component with independent `associatedContent`, `size`, and `overflow` props. Remove `Toolbar.Filters` compound export. Filter types (`Filter`, `BooleanFilter`, etc.) are now exported from `FilterBar` instead of `Toolbar`.

## 3.0.0

### Major Changes

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - 3.0 Pre-release.

### Patch Changes

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[AiMark] Migrate CSS to 3.0 patterns (remove `@layer` wrapping and adopt `.anvil2` specificity scoping).

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[FieldLabel]\[Switch] Position AI Mark on the far right of the container in label-row headings (CheckboxGroup, RadioGroup, SelectCardGroup via FieldLabel) and Switch.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Alert] Fix content padding.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Alert] Fix status icon size and vertical alignment with title.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Breadcrumbs, Button, ButtonCompound, ButtonToggle, ThemeProvider] Update styles to use new design tokens

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[EditCard, FieldLabel, FieldMessage, Icon, Link, ListView, Listbox, Menu, Overflow, Page, Pagination, Popover, ProgressBar, Radio, SearchField, SegmentedControl, SelectCard, SideNav, Skeleton, Spinner, Stepper, Switch, Tab, Text, TextField, Textarea, Toast, Toolbar, Tooltip]: Apply component tokens to SCSS files.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Tokens] Add Avatar component design tokens and migrate SCSS to use token variables.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Checkbox] Restore indeterminate icon precedence so the indeterminate state renders its icon regardless of the `checked` value.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Combobox, MultiSelectField] Fix group layout regression in option lists.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Tokens] Add Announcement component design tokens, missing foreground tokens for success, and migrate SCSS to use token variables.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - **BETA** \[InteractiveCard] Migrate to 3.0 patterns (unwrap `@layer` blocks) and expose a new `--a2-mod-interactive-card-action-background-color` custom property for background overrides.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Tokens]\[Menu] Add `menu.item` hover and active state tokens (`foreground.color-hover`, `foreground.color-active`, `background.color-active`) and wire them through Menu styles.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Tokens] Add Badge component design tokens and migrate SCSS to use token variables.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[SelectCard, YearSelector, Calendar, Page] Restore focus-ring and layout regressions dropped during rc-3.0.0 merges: SelectCard inner Checkbox/Radio className wiring, YearSelector focus ring via SelectCard's `focus-label` mechanism, Calendar `.cell:focus-visible` ring on `tabindex=-1` cells, and Page `content-wrapper { grid-area: content; }` so PageContent's virtual-scroll ResizeObserver does not inflate the grid row

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - **BETA** \[Select] Fix option text color.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[SelectMenu] Repair popover styling regressions (border, shadow, and highlighted row background).

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Tokens]\[SideNav] Restructure SideNav tokens and update SideNav styles to match. Consumers referencing the prior SideNav token names must migrate to the new shape

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Details, Dialog, Divider, Dnd, Drawer, DrillDown] Update styles to use new component tokens

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Tokens]\[Switch] Restructure Switch tokens (new hierarchy and shadow token scoping) and update Switch styles to match. Consumers referencing the prior Switch token names must migrate to the new shape

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Tokens] Consolidate TextField, Textarea, and SearchField tokens into a single `text-field` token set. `search-field.tokens.json` and `textarea.tokens.json` are removed; their tokens are merged into `text-field.tokens.json` with a flattened hierarchy and renames (e.g. `background-color-strong` → `background-color-disabled`). Consumers of the prior per-component token names must migrate

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Text] Remove `letter-spacing` from the `headline` variant (all sizes).

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Toast] Rename `--a2-local-toaster-stack-padding` CSS custom property to `--a2-mod-toaster-stack-padding` to align with the `--a2-mod-*` convention for component-local overrides.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Button] Apply disabled opacity via design token.

  \[Calendar] Refactor styles to use design tokens and `--a2-mod-*` custom properties.

  \[Card] Update styles to use design tokens.

  \[Checkbox] Update styles to use design tokens.

  \[Chip] Update styles to use design tokens.

  \[Combobox] Update styles to use design tokens.

  \[Icon] Rename custom properties from `--a2-local-icon-*` to `--a2-mod-icon-*`.

* [#1899](https://github.com/servicetitan/hammer/pull/1899) [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5) Thanks [@tounsoo](https://github.com/tounsoo)! - \[Tokens] Add Alert component design tokens and migrate SCSS to use token variables.

* Updated dependencies \[[`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5), [`6ea319a`](https://github.com/servicetitan/hammer/commit/6ea319a282209312485756bfd37f1e2102f8c7e5)]:
  * @servicetitan/hammer-token\@3.0.0


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.