# Change Log

## 12.50.1

### Patch Changes

- f0bb16b: Fix disabled state color and background color for StyledMultiInput when being used in erb routes.
- 195f0ba: - Update `Dropdown` accessibility semantics so searchable dropdowns has `aria-haspopup="dialog"`.
- 0b792e4: Fix `AnchorNavigation` scrolling alignment in page layouts with sticky/global headers

## 12.50.0

### Minor Changes

- 1e8da8b: New `TabList`, `TabList.Tab` and `TabPanel` components with `idPanel` prop for WCAG Aria Tabs

### Patch Changes

- 5bb5081: - Always render `aria-expanded` on the `Select` trigger combobox, including the disabled state
  - Add `aria-controls` and `aria-haspopup="listbox"` to the `Select` trigger so searchable selects expose the full combobox ARIA contract

## 12.49.1

### Patch Changes

- 8da8b1d: Fix `Calendar` day cells preventing global button styles from overriding component colors.
- ce61ed8: Improve `SuperSelect` empty-state accessibility so screen readers can reliably perceive "No results"

## 12.49.0

### Minor Changes

- 05247ae: `Typeahead` search icon position is now on the left and always present
- 05247ae: Add `Page` fill-height layout support via the new `fillHeight` prop, improve footer positioning and full-height page composition across detail/settings/landing page wrappers using new default.
- 05247ae: Add `min` and `max` props to `NumberInput`. Spinner buttons and arrow-key stepping respect the bounds, the bounding button is disabled at its boundary, and the typed value is clamped to the range on blur. Inherited by `CurrencyInput` and `Form.NumberInput`.

### Patch Changes

- 05247ae: Fix `Checkbox` not setting the `indeterminate` DOM property on the underlying `<input>` element.
- 05247ae: Accessibility improvements for `Toast` notifications UXI-1673
- 05247ae: `Search` input field button and 'Go to search results' buttons are now focusable via keyboard.
- 05247ae: Make folded `AvatarStack` popover scrollable on small viewports.
- 05247ae: Update Yellow-40 color token to `#B28500` to satisfy WCAG contrast requirements

## 12.48.2

### Patch Changes

- fb530a8: Updated Checkbox border color from `gray70` to `gray50` to have sufficient contrast
- b4352e3: Updated Switcher background color from `gray70` to `gray50` to have sufficient contrast

## 12.48.1

### Patch Changes

- c50454b: `Pagination` adding `aria-live="polite"` and `aria-atomic="true"` so screen readers announce the updated range when the page changes.
- e453bd7: Close `Pagination` dropdown on blur
- 9bc1a2d: `FileList` download links now include the HTML `download` attribute so clicking the per-item download icon (and the "Download All" button) saves the file instead of opening it in the same tab. Note: browsers still ignore `download` on cross-origin URLs unless the server sends `Content-Disposition: attachment`. Fix incorrect role and make it `role="link"`
- 935ca17: Darken default `Spinner` variant color from `gray60` to `gray50`
- b66f590: `ToggleButton` add focus outline and selected state border ring
- a5c30a5: `Popover` default `restoreFocusOnHide` to `true` when `role="dialog"` so focus returns to the trigger on dismiss (WCAG 2.4.3)

## 12.48.0

### Minor Changes

- c26d00f: `DateSelect` adds `displayDate` prop to initialize the Calendar popover to another date (Priority: value -> displayDate -> today)
- 66032af: `Thumbnail` error state now shows a dedicated row under the caption instead of coloring the caption text. The existing `error` prop now supports a string for custom copy
- e9c7cb8: `NextTile` add new `role="radiobutton"` to adjust selectable tile styles

### Patch Changes

- 6845fbe: Resolve Shadow DOM ClickOutside bug with Event.composedPath(), resolves issue with DateSelect being hidden when clicking on Calendar dropdowns or prev/next buttons.
- axios and lodash updates

## 12.47.1

### Patch Changes

- 2604058: Fix `Menu.Group` losing its label styling

## 12.47.0

### Minor Changes

- bde9020: `SuperSelect` accessibility fixes

  - Make `SuperSelect` keyboard behavior consistent with `Select` and `MultiSelect`.
  - Render the clear button as a sibling of the trigger to resolve nested interactive controls.
  - Use `role="combobox"` on the single-select trigger.
  - Use `role="group"` on the floating overlay and suppress its `aria-orientation` to resolve disallowed ARIA attributes.
  - Forward `aria-label`/`aria-labelledby` to the Virtuoso listbox so it has an accessible name.
  - Redirect `aria-controls` from the overlay to the listbox to resolve nested listbox children.

### Patch Changes

- 8783f43: Fix `Calendar` day cells and Table sortable header buttons not inheriting text color from parent, preventing global button styles from overriding component colors.

## 12.46.1

### Patch Changes

- 8eb4eb2: `Select` styles on styled container not wrapper container. Fix className and style, for widths, heights, borders, padding, etc
- edae563: `Form` and `TooltipIconOnlyButton` add `type="button"` to prevent form submission when the tooltip trigger is clicked inside a `<form>` element
- 9b33998: SuperSelect hover styles fix with Cornerstone css

## 12.46.0

### Minor Changes

- ae28df6: - Introduce `as` prop for `EmptyState.Title` to support customizing empty state title
- aaf9541: Improve `ThumbnailGrid` accessibility by requiring a `label` prop and applying default root semantics (`role="group"` with `aria-label` or `aria-labelledby` based on `title`).

  Update `FileSelect.GridSource` and ThumbnailGrid stories/tests to pass `label`, and add dedicated core-docs pages for `ThumbnailGrid` with accessibility guidance and cross-links from FileSelect/Thumbnail docs.

### Patch Changes

- e3601e1: Add icon to `Table.BodyRow` overdue variant so overdue state is not conveyed by color alone
- 9a06acb: Add icon to error token state so it is not identified by color alone

## 12.45.0

### Minor Changes

- 6571236: Improve accessibility for `Search` in `MenuImperative` by changing the role from `"searchbox"` to `"combobox"` and adding `aria-haspopup="listbox"` and `aria-expanded`
- c2c1280: Update searchable `Dropdown` trigger accessibility semantics by removing dialog-specific ARIA attributes while preserving `aria-expanded` state and focus behavior.
- 1a44488: `Dropdown` and `Select` with a footer now contains focus and allows TAB nav inside the overlay. TAB no longer closes when a footer is present.
- 19abc32: `Table`: sortable column headers now use a `<button>` for the sort action, so the control has the correct role and keyboard behavior for assistive technologies.
- ae74dbb: The `Tabs` More overflow list renders semantic list markup. The more overflow button is conditionally rendered. Global Navigation update, Tabs role='navigation' adds semantic list markup, expects links as Tabs.Tab children. _Note:_ Most cases role=navigation is the wrong answer, do not mix Tab UX: Tab-links-with-panels, Tab-buttons-with-panels, and Tab-navigation-links.

### Patch Changes

- 678be29: Added `gray50` border for `Slider` track to meet contrast requirements.
- da03165: Page `AnchorNavigation`: add `href` fragment links for each section so anchors expose a proper link role; `preventDefault` on click preserves provider scroll and focus behavior.
- c20fc61: Removed `tabIndex={-1}` to make the `Token` remove button keyboard accessible in `MultiSelect`
- e6751b8: `Form` `read` view label node renders span not label tag. Resolves invalid a11y. Read view tests should getByText
- de00318: `Thumbnail`: fix screen reader reading order for checkbox role by hiding visible content from the accessibility tree
- 339da74: `AvatarStack` add `role="group"` with `aria-label`
- 23c02da: Fix `Select` with overflowing label requiring two clicks to open

## 12.44.0

### Minor Changes

- 3ace1da: Page AnchorNavigation move focus to section heading when anchor navigation link is activated

### Patch Changes

- 708b0a9: Spinner aria hide `progressbar` and `StyledSpinnerOverlayLabel` from Screen Reader when `!loading`
- 35d9064: Add visually hidden labels in Multi SuperSelect for ScreenReaders to announce selected items
- 5760de9: `Table` Update arrows of basic table to more closely resemble datatable arrow pattern that is accessible

## 12.43.0

### Minor Changes

- ca101fc: Export type AsLinkProps and update to accept all link props
- 2cd5b75: Add `aria-invalid` attribute to `Checkbox` component for improved accessibility

### Patch Changes

- e1d693b: Improve `SuperSelect` accessibility

  - Single-select: `role="combobox"` -> `role="button"`, added `aria-describedby` pointing to selected value
  - Multi-select: `role="combobox"` removed from outer container, inner input gets `role="combobox"` with `aria-activedescendant` for token navigation
  - Removed `role="dialog"` from overlay
  - Search input in overlay: added `role="combobox"`, `aria-haspopup="listbox"`, `aria-expanded`, `aria-activedescendant`
  - Tokens wrapped in semantic `<ul role="list">`/`<li>` markup, removed from tab order (`tabIndex={-1}`)
  - `aria-selected` fixed to reflect actual selection state
  - `aria-disabled` added to disabled options

- ca101fc: Fix Tabs roleless variant keyboard firing onclick twice
- 818727f: Fix double pixel width with Selects. Continue to allow container to set/override widths
- 5a33cc0: Fixed invalid `aria-controls` attributes in `SuperSelect` and `MultiSelect` that referenced non-existent DOM element IDs when the dropdown is closed.
- 6a06559: Add keyboard support (Enter, Space) to open DateSelect calendar
- ce03cf7: Updated `aria-labelledby` logic in Select (PillSelect) to properly integrate with external labels for combobox
- d4652e3: **AnchorNavigation:** improve accessibility for in-page section navigation.

  **`@procore/core-react`**

  - Wrap the list in a `<nav>` landmark with a default accessible name from the new translation key `core.anchorNavigation.landmarkLabel` (English: “On this page”). Only `en.json` is updated for now; other locales can be added by localization.
  - Add optional `aria-label` to override the default landmark name when multiple navigations need distinct names.
  - Use `aria-current="page"` on the active section link and omit `aria-current` on inactive links.

  **`@procore/core-docs`**

  - Document the navigation landmark, translation key, `aria-label`, and `aria-current` behavior on the AnchorNavigation page.

- 9122889: Token and FileToken: Prevent unnecessary tab stop
- d49f826: ConfirmModal fix allow additional close methods
- 19853ef: Typeahead component:

  - Allow the Clear button to receive focus by removing `tabIndex={-1}` for better keyboard accessibility.
  - Replace the hardcoded `aria-label` with a value from the i18n context.
  - Update focus behavior so that focus returns to the input after pressing the Clear button via keyboard.

- Updated dependencies [bf0532b]
  - @procore/core-icons@12.15.0

## 12.42.0

### Minor Changes

- 1b008b9: Update `Modal` documentation for accessibility. `Modal onClose howToClose` should be used to centralize close management, adding Esc Key support, and dialog role. Continue to use `Modal.Heading` to link the dialog to the semantic heading.

  - Deprecate `onClickOverlay` prop on `Modal`. Use `Modal onClose howToClose={['scrim']}` instead.
  - Deprecate `onClose` prop on `Modal.Header`. Use `Modal onClose howToClose={['x']}` instead.
  - Update `ConfirmModal` to support `role="dialog"` or `"alertdialog"` and `aria-modal`. You should opt-in to one of the roles.
  - `ConfirmModal` add support for both `ModalOnClose` and the legacy `MouseEvent<HTMLButtonElement>` callback
  - Export `ModalOnClose` type from `core-react`
  - Fix, removed duplicate id from `Modal.Header` and `Modal.Heading`

  - bcd3b67: Enhance MenuImperative drag and drop accessibility to support keyboard navigation experience. Space Key picks up the item to drag.

### Patch Changes

- 88b6bd2: SuperSeclect change aria-haspopup for trigger and overlay role to listbox
- b1578df: removing color experiment, not being used
- 1e79569: Updating ContactItem screenreader context by removing need to read avatar which is copied info of text next to it
- 91c1198: [ProgressBar] adding in border to progress bar styles for accessibility, using first color to pass 3.5:1 contrast ratio

## 12.41.0

### Minor Changes

- 9bdd705: Show overflow tooltips on keyboard focus for `Select` and `PillSelect` components
- 0e6fc2f: `Thumbnail`: keyboard-accessible caption tooltip and focusable non-checkbox variants
  - **Caption tooltip:** The overflow tooltip for the caption now opens when the user hovers or focuses the whole Thumbnail (not only the caption). The tooltip is still shown only when the caption is overflowing. Tooltip logic is lifted to the Thumbnail level and wrapped in a shared `ThumbnailCaptionTooltip` component.
  - **Focusability:** Base and Figure Thumbnails (and their Placeholder variants) are now focusable (`tabIndex={0}`) with `role="group"` and `aria-label` (from label + caption) so keyboard users can tab to them and trigger the caption tooltip on focus. Checkbox Thumbnails are unchanged (focus remains on the hidden input).

### Patch Changes

- 8747be1: Add `&&` specificity boost to `StyledUploadButton` in `Dropzone` to prevent cross-MFE styled-components cascade conflicts
- 4de4e0c: Remove unneeded tabstop from `Section` component
- ee7d85a: `AvatarStack`: Prevent popover from opening when an avatar is dimmed(disabled).
  Restore focus to the view-more ("+N") trigger when the View All modal is closed (e.g. via Escape) for keyboard accessibility.
- 80bb8c8: Deprecate `FileSelect` and `FileTokenList`. Migrate to the connected version.
- 453bce7: Deprecate the `shelf` prop on `Table.Container`. This pattern is not accessible and we do not have a migration path.

## 12.40.0

### Minor Changes

- 79d9a1d: Update Tab attributes and more overflow for keyboard and fix aria attributes. May cause friction with existing tests.
  - `Tabs.Tab` now defaults to buttons if provided a click handler. Allows them to be in keyboard TAB order by default. It is preferred that consumers explicitly opt-in to button or link role.
  - `Tabs.Tab role = link` now renders `a role = link` instead of `a role = button`. May break tests, to resolve update tests to target link rather than button.
  - `Tabs` no longer renders a `nav` element. May break tests, to resolve update tests to target individual tabs, the group, or add data-qa attributes.
  - Resolve "no nested controls" for overflow. The Tabs "More" overflow menu no longer is role = menu and menuitems with nested interactions, now renders `role = dialog` and relies on the children to be focusable for regular keyboard TAB navigation.
- 28c4df6: New design pattern- `Panel.Title` and `SplitViewCard.PanelTitle` remove truncation and tooltip, allowing the text to wrap mutliple lines. Content text and left/right buttons align at the top.
- fd506f5: Show `FileToken` error message inline instead of in a tooltip

## 12.39.0

### Minor Changes

- 916989e: Improve date input accessibility by adding an `aria-label` prop
- 3a1321e: Make `AvatarStack` avatar popovers keyboard accessible

  - Changed avatar triggers from img/link roles to button role

- 4ed0299: - Introduced a new hierarchical model for rendering grouped options across `Select`, `MultiSelect`, `GroupSelect`, and `Form` components which improves semantic HTML structure. Backward compatibility is maintained.
  - The `groupHeaderRenderer` prop in `MultiSelect`, `Form.Select`, and `GroupSelect` is deprecated. Use `groupRenderer` instead, which now receives the group object and its `children` (the options).
  - Passing group label as the `children` to `MenuImperative.Group` and `Select.OptGroup` is deprecated. Use the `label` prop for the group title and pass the options as `children`.
- 82146ce: Improve `MultiSelect` accessibility:

  - Add `aria-invalid` and `aria-describedby` support for error state
  - Fix selected tokens announcing "selectable" by removing them from tab order
  - Fix combobox input nested inside `role="list"` by separating structure from visual layout
  - Add Delete key support for removing tokens
  - Close dropdown when navigating tokens with arrow keys
  - Add "None selected" announcement when no items are selected

- d36f2ec: Make Tooltips announced by screen readers. User should still supply a focusable element like `Button`.

  - `Tooltip` update default `trigger` to hover _and focus_
  - `Tooltip` supports `trackAriaExpanded` prop to pass aria open state to children. Recommendation set to `true`, valid on elements like `button`. Currently false, possible future default it to true
  - `Tooltip.Content` uses `aria-live` ~possible future: renders empty container, then inner content~
  - `Tooltip` apply `role tooltip` to the overlay to handle `aria-describedby` and `id`. Allow for manual `aria-describedby` and `id`
  - Update tooltips in `Checkbox`, `SegmentedController`, and `SourceItem`

- 4bbe568: Added `onTransitionEnd` handler to Panel to unmount it from the DOM after the closing animation finishes

### Patch Changes

- 374386b: Demo and Coverage stories now wrap `DateSelect` with a visible `Label` ("Date") and `aria-labelledby`. Applies to Basic, Locales, and all variants (empty, with value, error, disabled)
- f9ed3e9: In `Page.Aside` added optional focus management (`focusOnOpen`, `restoreFocusOnClose`) to move focus into the aside on open and restore it on close, without affecting existing behavior by default.
- 578560c: Removing the tooltip on non-preview FileList item re: a11y
- f9ed3e9: Remove scroll area from shifting on focus. Section and Tearsheet use outline instead of border for visible focus
- b0da9a8: Enhance a11y for `CheckboxOutput` component by moving existing `aria-label` from the `span` wrapper to the `svg` icon.
- 40ce870: remove intersection observer
- fd6f808: Disable onClear when Select, TieredSelect, or PillSelect is disabled.

## 12.38.0

### Minor Changes

- 5c9765e: Revert SuperSelect accessibility changes
- ec26b8f: Updated Select to apply correct ARIA roles and states by using a `combobox` pattern for listbox-only panels and a `button` (disclosure) pattern when additional panel content is present.
- 09ee67d: `Popover` added optional `trackAriaExpanded` to apply the `aria-expanded` attribute, recommended use with `Button` triggers. Enabled in `AvatarStack`.
- a8bbf59: Banner: Add `Banner.ExpandActionButton` to toggle expandable content; handles aria-expanded and default "Expand" / "Collapse" label (i18n). Supports children for a custom label.

### Patch Changes

- dfdba61: `SuperSelect`: Added a minimum height check to `size()` so that if the computed `availableHeight` for the dropdown is less than 248px, `maxHeight` is not set to that value, causing the menu to flip open upwards instead of shrinking to fit below.
- d786d24: `Spinner`: Add appropriate ARIA role and labeling for accessibility.
  - Add `role="progressbar"` to the spinner container so screen readers recognize the loading state.
  - Add `aria-labelledby` linking the progressbar to its label (default "Loading" or custom `label`).
  - Use stable `id` from `useId()` for label association; when a visible label is shown with children, associate it via `aria-labelledby` and set `aria-hidden` on the SVG to avoid duplicate announcements.
- e26caf8: Improve `FileSelect` source list accessibility:
  - `FileExplorerSidebar` - Add `role="listbox"` to the navigation container for the list of sources
  - `SourceItem` - Add `role="option"` with `aria-selected` and `aria-disabled` for proper listbox semantics; set `tabIndex={-1}` when disabled so keyboard users skip disabled items
- e519f21: `Select` applies className and style always to the outermost element (like before when buttons were nested)

## 12.37.0

**DO NOT USE 12.37.0** This release changed SuperSelect UI UX which caused issues. It has been reverted, please use `12.38.0` instead.

### Minor Changes

- 26ca426: _Changes internal HTML structure_ Fix Delete control accessibility in Select components:
  - `Select`, `TieredSelect` - Clear button is now keyboard accessible and positioned outside the main button element. This will affect tests that query by button role. To fix this, specify accessible name: `getByRole('button', { name: 'label' })`
  - `DateSelect`, `GroupSelect`, `MultiSelect`, `SuperSelect` - Clear button has correct tabIndex (0 when visible, -1 when hidden)
- 00af70b: Improved `Dropdown` and `TieredSelect` search dropdown focus handling. Removed auto-highlight side effects on open and ensured predictable first keyboard navigation from the search input, improving screen reader behavior. Added keyboard activation support (Enter/Space) for TieredSelect trigger.
- b3cf4bb: `OverlayTrigger` change event `blur` to `focusout` and `focus` to `focusin`
- 629b6a8: SuperSelect:
  - add `defaultOnUnselectAll` to help aid with unselecting options when there's a search value. Previously, all options were unselected when a user clicked `Select All`. **This only happens when all options are selected, and the user clicks on `Select All`**
  - add `onUnselectAll` prop to allow custom implementation for unselecting options
  - reworked `previousSelectableOptionsRef` and how auto-selection determines if there are new options to add
- 147ecb7: Improved SuperSelect accessibility, added `role="group"` and `aria-labelledby` to MultiTrigger, added an `id` to Label, and updated ARIA attributes in useSuperSelect (`trigger`, `search`, `multi-input`, `options`).
- 1c5981d: Removed `aria-busy` attribute from `Button` when `loading` because this is an incorrect usage of this attribute.
- 26ca426: `DateSelect` - Enter key on target no longer closes the picker. This change allows to use Enter key for the Clear button.

### Patch Changes

- befa53e: Added `aria-live="polite"` attribute to `StyledEmptyState` in `FileSelect` to automatically announce content when it's updated.
- b3cf4bb: Add `aria-describedby` to `FileSelect` SourceItem tooltips for screen readers
- 53a9004: Indicate expanded state using `aria-expanded` for `DropdownFlyout` component
- f54c157: Fix `DateInput` place holder for pl-PL locale
- d452cdb: Modified color support for experimental purposes

## 12.36.0

### Minor Changes

- 66c5e53: Improve Tree component accessibility:
  - Add `role="tree"` to container with `aria-multiselectable`
  - Add `role="treeitem"` to each node with `aria-level`, `aria-setsize`, `aria-posinset`
  - Add `aria-expanded` for expandable nodes and `aria-selected` for selectable nodes
  - Add `role="presentation"` to react-window container divs to preserve accessibility tree
  - Add `aria-activedescendant` to track focused item for VoiceOver compatibility
  - Add unique `id` to each treeitem for aria-activedescendant reference
  - Use Button component for expand/collapse chevron
  - Add left/right arrow and Tab/Shift+Tab keyboard navigation within tree
- 47d9bbe: Improved accessibility by allowing hover tooltips to be dismissed with Escape key

### Patch Changes

- 90e1293: Update border colors in `Input`, `Select`, `SuperSelect`, `DateInput`, `NumberInput` and other input components for better contrast. Default border color changed from `gray70` to `gray50` and hover border color changed from `gray45` to `gray20`.
- 33b7133: Add `aria-disabled` to `Select.Button`
- 795d8eb: adding `aria-hidden='true'` to numeric Labels in `Slider`
- e88fca5: `SuperSelect`
  - Fix visual bug with Select All being selected when there are 0 options
  - Fix issue with auto-selection not turn on/off due to incorrect comparisons of selectable options
- dab23b7: Updated radio button border color from `gray70` to `gray50` to have sufficient contrast
- 270e9f1: Updated `tableSortFontColor` from `gray70` to `gray50` and `tableSortFontColorHover` from `gray45` to `gray40` to have sufficient contrast between the icon and the background.
- 983fea3: Fixed `Pagination` dropdown being cut off at insufficient viewport height.

## 12.35.0

### Minor Changes

- b78032a: `Calendar.Day` component is now a button element
- ea3dac5: Improve `Table.Carat` accessibility:
  - _Notice:_ Change ref type from `SVGElement` to `HTMLButtonElement`: The Carat component now correctly types its ref as `HTMLButtonElement` instead of `SVGElement` to accurately reflect that it renders a Button component. Consumers using refs on Table.Carat should update their ref types accordingly.
  - Add dynamic internationalized aria-labels that change based on expanded state (Expand/Collapse) and support custom aria-label prop override for consumers who need more specific labels
- 44c7e06: Implements a `PortalProvider` and hook for consumers to provide an optional global portal container
- 9d002eb: Add `TextEditor` accessibility props for screen reader support
  - Add `aria-label` prop to provide an accessible name for the editor
  - Add `aria-description` prop to provide additional context for screen reader users
- e7c8431: Add internal `mainSectionRef` prop to SplitViewCardContext that is used to return focus to Main section when Panel closes. Change tabIndex of the Main section to -1

### Patch Changes

- 80693ba: Deprecated the `clickable` prop on the ContactItem component.
- 551cb80: Improve `DateSelect` error state accessibility
  - Add `aria-invalid` attribute that reflects the `error` prop
- 0c0c82f: `Table` Associate error messages with their related fields using `aria-describedby` and add `aria-invalid`.
- 4d677d3: Add `aria-invalid` attribute to text editor container in error state
- f4dcc0b: Improve `TextArea` error state accessibility add `aria-invalid` attribute that reflects the `error` prop
- eff2231: Adding role='img' and aria-label to `Thumbnails` placeholder icons
- 1f33e8c: Improve `Panel.Header` back button accessibility when inactive:
  - Make the Button inaccessible when `onClickBack` is undefined: set `aria-hidden`, `tabIndex={-1}`, and `disabled` on the Button so screen readers and keyboard users do not focus or announce it.

## 12.34.1

### Patch Changes

- 2eb552f: Improve MultiSelect accessibility:

  - Add `role="combobox"` to the search input with `aria-expanded` and `aria-controls`
  - Add `role="list"` to the selected tokens container with `aria-label="Selected items"`
  - Add `role="listitem"` to each selected token with `aria-label="<label>, selected"`
  - Add `aria-activedescendant` to track focused token during keyboard navigation
  - Add new locale keys: `multiSelect.selectedToken` and `multiSelect.selectedItems`

## 12.34.0

### Minor Changes

- 81dee8f: `TierSelect` Fix empty message not showing when there are no options
  - Add support for dynamic placeholder value in Search field
  - Add possibility for controlled search value

### Patch Changes

- 6df3579: Add warning to add ARIA labels for icon-only buttons
- 769b37e: Add role (img) and aria-label (Folder/File) to Tree icons
- 64384c4: Default `tabAsNavigation` was changed to true to fix keyboard navigation in RichText and TextEditor
- Updated dependencies [fd00049]
  - @procore/core-icons@12.11.1

## 12.33.0

### Minor Changes

- 9481875: Adding in aria invalid logic to Input

## 12.32.0

### Minor Changes

- 9a1d3c4: Add settingsLink prop to ToolLandingPage.Title for client-side routing support while deprecating settingsHref
- c8dad86: Basic Form.RichText textEditorComponent for migration. Will be required in v13.

### Patch Changes

- Updated dependencies [cbc7f68]
- Updated dependencies [8112072]
  - @procore/core-i18n-js@10.30.0
  - @procore/core-icons@12.11.0

## 12.31.0

### Minor Changes

- 129f3d0: Add support for new locales: Italian, Portuguese, Traditional Chinese (Taiwan) and Norwegian (Norway)
- bcd2d3c: Adding in exports for internal template components as `UNSAFE_PageTemplate`
- 83eeb39: Exposed `MenuImperative` as the export, deprecated `UNSAFE_MENU`

### Patch Changes

- c68e49f: Click `DropdownFlyout` when it's open, close it
- 70ca908: Layout Cards like DetailPage.Card refreshes the anchor nav label on navigationLabel prop change
- f95beb2: Add unsafe internal temporary helper exports to support migration to separate TextEditor package.

## 12.30.0

### Minor Changes

- 3f27bb5: SuperSelect fix for "Select All" - auto-selection

### Patch Changes

- ce99170: Avatar size sm and AvatarStack size sm undeprecated
- Updated dependencies [1a41336]
  - @procore/core-icons@12.10.1

## 12.29.0

### Minor Changes

- 5139e79: TextEditor rollback, revert CKEditor (as-if 12.25.2). Keep coreReactJestConfig (optional). **Important Note Do Not Use Core React v12.26.0 - 12.28.1**, multiple loads may break pages.

## 12.28.1

### Patch Changes

- 1050273: SuperSelect move deselect all logic
- Fix selecting list type in Text Editor

## 12.28.0

### Minor Changes

- 819e783: Adds "Select All" as an option in SuperSelect

## 12.27.1

### Patch Changes

- af60183: Add TinyMCE-specific props as no-ops to TextEditor to avoid creating a breaking change.

## 12.27.0

### Minor Changes

- TextEditor is CKEditor only

## 12.26.6

### Patch Changes

- 4d27a6: fix rich text editor list cursor position
- ae8238: fix new line in form rich text
- 67e065: fix/feat NumberInput chains aria-labelledby for prefix and suffix
- add types for coreReactJestConfig

## 12.26.5

### Patch Changes

- Improve performance of multiple TextEditorOutput instances
- Remove empty space under Slider when not using labelled steps

## 12.26.4

### Patch Changes

- 07a97f2: Upgrades `axios` dependency to `^1.12.1`.
- 1379493: Add `prefers-reduced-motion` media query to disable `Loader` animations if needed
- Updated dependencies [07a97f2]
  - @procore/core-icons@12.9.1

## 12.26.3

### Patch Changes

- 4e22eaf: Fix TieredSelect clearing
- 613adb2: Remove TextEditorOutput border
- dbb07ad: Add `type="search"` to the `Search` component

## 12.26.2

### Patch Changes

- be6f23f: Make TextEditorOutput consistent with TextEditor
- 962a686: Fix incorrect disabled attribute usage on Thumbnail
- fb45d1a: Table Checkbox select row aria label
- 13fdc00: Disabled Token disables remove token button

## 12.26.1

### Patch Changes

- 2813b0a: [TextEditor] using prod license key for editor instead of dev key

## 12.26.0

### Minor Changes

- b341ca9: Migration of the TextEditor component from TinyMCE to CKEditor, while providing backward compatibility with the old editor API with tinyMCE prop. See coreReactJestConfig for test setup compatibility.

### Patch Changes

- 7407d2a: Fix Dropdown loading Spinner being clipped
- 8243b84: Fix focus styles for scroll areas

## 12.25.2

### Patch Changes

- 69492f6: Added an appropriate role for Remove buttons in pill component
- 16e7f49: Fix `Modal.Heading` IDs automatically linking to the dialog and scroll region without duplicating `id`
- ecba76f: Fixes closing DropdownFlyout on click outside
- 50649d7: Convert `Token.Remove` component into the button with improved accessibility
- 9e3d226: Use React.HTMLElement helpers directly rather than an internal alias. Remove previous patch exports
- 202fb05: Fix border radius in Popover
- 63ac8fa: Added an accessible role and label to the scrollable regions of the components (Modal, Panel, SplitViewCard, Tearsheet)

## 12.25.1

### Patch Changes

- 0f0f442: Fix Token disabled and focus styles (dont use, bad a11y)
- 6cce20a: Added role and aria-label to GhostPlaceholder
- 0f0f442: Textarea resize prop fix
- 65185fa: Fix isSelected state for batched options and add in isPartiallySelected for checkboxes
- afa6740: Added additional type exports to resolve downstream build errors.
- 0f0f442: fix NumberInput incrementor dom errors. rollback input type

## 12.25.0

### Minor Changes

- f8cae7a: Updated NextTile with accessibility changes and added documentation. Updated styles for Tile to better work as "checkbox" Tiles

### Patch Changes

- 09b7763: Add the `combobox` role to the combobox for selecting a page inside the `Pagination` component
- e92ba95: Fix: SegmentController selected state for initially selected Segments
- d996121: Bump cdn-translations version

## 12.24.0

### Minor Changes

- dd0bc0e: Added `role="menu"` to Menu and `role="menuitem"` to MenuItems
  - Adding ability to track aria-expanded to OverlayTrigger onto target element for a11y concerns
  - Using trackAriaExpanded and role for Panel action overflow

### Patch Changes

- ee3d968: Improved accessibility for `NumberInput` with incrementor role spinbutton
- bf08560: Improved accessibility for `Spinner` with adding aria-label
- Fix missing footer on UNSAFE_SuperSelect

## 12.23.0

### Minor Changes

- 5848cca: Update I18nProviders to have the option to pull translations from the CDN package cdn-translations with `enableCDN` prop or context inheritance

### Patch Changes

- e14e204: There is a fix for inconvenient disappears after releasing the mouse outside of the popover component
- dfaab43: Added some aria to Contact Item and updated documentation
- Updated dependencies [fac7a44]
- Updated dependencies [b091686]
  - @procore/core-icons@12.8.0

## 12.22.0

### Minor Changes

- 76650bc: Support Styled Components v6. Prefixed styled-component props with `$` to resolve warnings on transient props.

## 12.21.2

### Patch Changes

- 632ce8a: Title to subheading spacing increased by 4, toggle button has consistent spacing in page header
- a9ac0ff: Yarn 4 migration
- Updated dependencies [a9ac0ff]
  - @procore/core-icons@12.6.1

## 12.21.1

### Patch Changes

- a923d1b: Un-deprecate `disabled` prop for the Search component
- 2cb1890: fix `NumberInput` typing issue

## 12.21.0

### Minor Changes

- ee16a7f: RadioButton error adds aria-invalid

### Patch Changes

- ce06a5b: Add description of `useSplitViewCard` hook in `SplitViewCard`
  Export `useSplitViewCard` to control opening/closing `SplitViewCard`

## 12.20.4

### Patch Changes

- Updated dependencies [1172b23]
  - @procore/core-icons@12.6.0

## 12.20.3

### Patch Changes

- 28a8cec: Added type overload to useI18nContext for non generic cases
- Updated dependencies [8ca5a1d]
  - @procore/core-icons@12.5.0

## 12.20.2

### Patch Changes

- dcf6db1: Fix `TieredDropdown` search state now clears on blur
- 39489bf: Fix for the second argument of `translate()` and `t()` to be optional when the string is not pluralized or interpolated
- Updated dependencies [ac240cb]
  - @procore/core-icons@12.4.0

## 12.20.1

### Patch Changes

- 3b03f2c: non-selectable items in the `Tree` are now styled to appear visually disabled
- 6b4152c: Update `ToolLandingPage` settings link colors to be a secondary button
- 6b4152c: Fixed typed `useI18nContext` to properly handle pluralized translations.

## 12.20.0

### Minor Changes

- 12df818: Added generic type parameter for `useI18nContext` to enable strong typing of translation parameters

### Non SemVer Changes

- Unsafe limited release alpha PageHeaderTemplate

## 12.19.0

### Minor Changes

- a7648b2: `Dropzone` component deprecates `tooltip` property, add `tokens` and `onClear` props for displaying files

### Patch Changes

- Updated dependencies [4fccfec]
  - @procore/core-i18n-js@10.29.3

## 12.18.1

### Patch Changes

- a34bc6a: Upgrades `@tinymce/tinymce-react`, removes `tinymce` as a dependency
- 789f671: Fix typo in translation key name.

## 12.18.0

### Minor Changes

- d167d90: [UXI-1088] Remove `react-beautiful-dnd` peerDependency requirement. Migration to and internalizes `@atlaskit/pragmatic-drag-and-drop`
- abb108e: Introduce `TextInput`component instead to replace `Input`, planning to deprecate `Input` component

### Patch Changes

- cb84286: Fixed `Spinner` to disable animations when `loading` is false.
- c447ddc: Tinymce to 6.8.5

## 12.17.8

### Patch Changes

- 53110d4: Deprecate `compact` property, add `isHorizontal` and `size` properties to EmptyState component

## 12.17.7

### Patch Changes

- 5cadbc9: Add default icon to Banner componet depending on variant
- 98780c8: Deprecate `iconRight` property and `tertiaryContrast` variant for Button. Decouple FilterToken component from Button

## 12.17.6

### Patch Changes

- 864ac9d: Update dependency package versions

## 12.17.5

### Patch Changes

- b19e0a0f42: Fix `isTierDisabled` in `TieredSelect` component with selectable tiers
- c33b95d3b0: `SegmentedController.Segment` `selected` instead of `active`, deprecate `active`
- c861e39b23: Deprecate `active` prop in `Tabs` component, replaced by the `selected` prop
- b6784bf2bc: `Spinner` `variant` instead of `color`, add new variants
  - Hide label on small sizes (`xs`, `sm`).
  - Deprecate `color` property.
  - Un-deprecate `variant` property, add `default`, `button` and `focus` variants
- caacaa17b5: Deprecate `traditional` `variant` for `Form` field layouts

## 12.17.4

### Patch Changes

- 3f23de248: Deprecate `gray` variant from Link component
- cce0b1f41: Axios package bump for security

## 12.17.3

### Patch Changes

- fe7e10cbe: Deprecate `sm` size in Avatar component
- 1d8188268: Tearsheet deprecate `placement` and `stretch`, add `block` property as a drop-in replacement for `stretch`
- 340e07485: Deprecate `size` `sm` in AvatarStack component
- 72cca9636: Popover deprecate `fluid` property, add `block` property as a drop-in replacement

## 12.17.2

### Patch Changes

- 844a38816d: Updated the file upload error messages to display the file's relative path.
- 144ef26610: Deprecate `disabled` and `error` props for the Search component
- d6f8cdd9cd: Fix some accessibility a11y warnings
- 33607f479c: Update Dropzone error messaging.

## 12.17.1

### Patch Changes

- 59ce2207fa: Improve messaging for blocking zero byte uploads in Dropzone component.
- Updated dependencies [fd00589dce]
- Updated dependencies
  - @procore/core-icons@12.3.0

## 12.17.0

### Minor Changes

- bbaaa149de: Removed text transform from the Spinner label

### Patch Changes

- e6cff39e8e: Fix invalid html attributes for Typography and Tabs, use styled-components transient prefix $
- fe5abed75a: Added animationFrame: true to autoUpdate to prevent ResizeObserver bug in @floating-ui

## 12.16.2

### Patch Changes

- 221c980472: Removed unnecessary re-renders for TextEditor by memoize the focusScope for the useEffect to avoid over-triggering.
- 758409d4d0: Add data-core-react attribute for tracking NextGen Layouts utilization

## 12.16.1

### Patch Changes

- 09eb576e78: Focus can leave a Modal or Tearsheet when the TinyMCE TextEditor has a plugin enabled that opens its own TinyMCE modal

## 12.16.0

### Minor Changes

- cb9ef0cf13: disable buttons during the closing transitions of the modal and tearsheets components.

### Patch Changes

- 5633033fec: Dropped core-css and scss in GroupBySelect
- d50705608f: [UXI-885] Updating colors for the animated progress bar

## 12.15.0

### Minor Changes

- 4e51fffd2: Add header prop to Select component

## 12.14.0

### Minor Changes

- e660ed1ce: Adding option renderer props to the Form.Select and MultiSelect types so they can be used without error by the consumer
- 85403fc79: Updating dependencies

### Patch Changes

- 081ac7922: fix React warning with Spinner and EmptyState for invalid attributes from styled-components
- d1e891702: EmptyState's description using `body` instead of `h3`

## 12.13.0

### Minor Changes

- 23cdefdd1a: Updating ToggleButton styles, adding loading prop
- 2718e17f50: Added size sm to Avatar and AvatarStack

## 12.12.1

### Patch Changes

- d6e90a75c: Fix placeholder for de-DE in DateInput component
- aeac00464: Fix issue with resetting ungrouped/grouped columns (UISP-215)[UISP-215 https://procoretech.atlassian.net/browse/UISP-215]

## 12.12.0

### Minor Changes

- ce4c89f36: Add onClickViewAll prop to AvatarStack
- b973bf06d: Thumbnail Placeholder variant file
- 2a9c4441d: Improve accessibility to dropdownflyout component which is used in data-table component
- 36ae9f382: update required label capitalization

### Patch Changes

- ba1a46661: Panel Footer show shadow only while scrolling

## 12.11.1

### Patch Changes

- 14551f2c3: Fixed passing a deprecated locale and its translations to I18nProvider was resulting in showing no translations

## 12.11.0

### Minor Changes

- b034c8b7e7: Introducing GhostPlaceholder
- 977a03d2e3: Allow to change the strategy for restoring focus in OverlayTrigger. This fixes closing Select by Tab button.

### Patch Changes

- Updated dependencies [9e378e94cf]
  - @procore/core-icons@12.2.0

## 12.10.0

### Minor Changes

- 6df512a30: - Add Polish support
  - Mark Locale type as deprecated
  - Mark getI18nProviderLocale as deprecated
- 6c2153dea: Changes have been made in the translation for Page keyword in pagination to include the colon along with the translation.
- 76a28038d: Panel Header Action improve screen reader and keyboard support with aria-label and focus trigger

### Patch Changes

- ae429cddb: SplitViewCard no outer spacing on mobile
- Updated dependencies [8c613f543]
  - @procore/core-i18n-js@10.29.0

## 12.9.0

### Minor Changes

- f4bba2564d: Add ToolLandingPage layout and deprecate the ListPage layout
- 2385ee3dc2: Add SplitViewCard component
- e72d0229e4: Add unsafe button variant for helix header

### Patch Changes

- c82363b770: Detail Page Body and Detail Page Card reduce leading space between

## 12.8.1

### Patch Changes

- f238516964: fix internal tab styles for helix header

## 12.8.0

### Minor Changes

- 77ab117fd4: Added `StyledFormFieldMain` export related to Form
- b9bbcf6427: Added internal prop to Modal parts to enable mobile breakpoint responsiveness for Helix Header use. Not intended for widespread use. (`compact`)
- a7bb749cf8: Added internal prop for Tab styles to be used for global navigation. Not intended for widespread use. (`UNSAFE_helixHeader`)

## 12.7.0

### Minor Changes

- d62b76bd8: tinymce strikethrough text formatting

### Patch Changes

- 2ab36a650: Add max_height property to TextEditorOutput component
- 55fed6084: Added `SpanAttributes` type export to fix `styled-components` type error.
- a5daf2815: Add export for Tier
- Updated dependencies [716e98717]
  - @procore/core-icons@12.1.0

## 12.6.0

### Minor Changes

- 77396f11c: Add TinyMCE advlist plugin to default plugins for more bullet and counter styles

## 12.5.0

### Minor Changes

- 898ad719e: Add support for multiple fallbacks on the i18nProvider

### Patch Changes

- 58d7677bf: Add export for DivAttributes

## 12.4.2

### Patch Changes

- 74dc723988: Extend MenuItemProps with AnchorItemProps

## 12.4.1

### Patch Changes

- ecc17b836: Added missing exports that were excluded after removing dist imports

## 12.4.0

### Minor Changes

- c3b8bc91c0: Add anchor navigation to DetailPage and SettingsPage layouts

### Patch Changes

- b832463cbe: TextArea allows rows for larger than min-height default sizes (removes fixed height)
- 6c63b2cf22: Added `UNSAFE_EmptyStateSvg` export from `EmptyState`.
- 6c63b2cf22: Added `UNSAFE_ThumbnailDocumentIcon` export from `Thumbnail`.
- 1ba4e0af1c: Add exports for celi-select package dependencies
- 004a11a69c: Added `UNSAFE_TreeChevron`, `UNSAFE_TreeChevronContainer`, `UNSAFE_TreeFilenameCaption`, `UNSAFE_TreeIconContainer`, `UNSAFE_TreeRowContainer`, and `UNSAFE_TreeRowContent` export from the `Tree` component.

## 12.3.0

### Minor Changes

- 9f36515057: Add SettingsPage layout
- d378956ad7: Adds exports for TinyMCE

## 12.2.0

### Minor Changes

- 952834a3c0: Add exports intended for json-formulator v12 support

### Patch Changes

- 2614939306: Update label typography font weight from 700 to 600

## 12.1.0

### Minor Changes

- d159f925da: Add missed exports of Dropzone for file-select library internal development

## 12.0.0 (2024-05-28)

### Major Changes

See [v12 migration guide](https://core.procore.com/latest/web/releases/migration-guides/core-react/v11-to-v12/) for the full list of changes and migration guides.

General changes:

- Imports from `dist` folder do not work anymore.
- `@procore/globalization-toolkit` is moved from dependencies to required peerDependencies.
- `react-beautiful-dnd` is moved from dependencies to required peerDependencies.
- `formik` peerDependency is now optional. Necessary when using `Form` components and hooks.
- resize observer polyfill remove

Other changes:

- `NumberInput` no longer uses the `locale` as prop from the component.
- `Page` and `DetailPage` subcomponent padding refactor.
- Removed deprecated components, hooks, and contexts:
  - `SuccessBanner`
  - `Sidebar`, `Sidebar.*`
  - `Analytics`, `AnalyticsContext`, `AnalyticsProvider`, etc
  - `AnchorContext`, `AnchorProvider`, `useAnchorContext`, etc
  - `Autofocus`, `useAutofocus`
  - `BoundingRectContext`, `useBoundingRectContext`, `useBoundingRect`, etc
  - `BufferContext`, `useBufferContext`, etc
  - `Event`, `EventProvider`, `useEvent`, `useEventContext` etc
  - `InjectedScriptContext`, `InjectedScriptProvider`, `useInjectedScriptContext`, etc
  - `ListNavigationContext`, `ListNavigationProvider`, `useListNavigationContext`, etc
  - `ResizeObserver`
  - `TextEntryContext`, `TextEntryProvider`, `useTextEntryContext`, etc
  - `TimerContext`, `TimerProvider`, `useTimerContext`, etc
  - `TriggerContext`, `TriggerProvider`, `useTriggerContext`, etc
  - `VisibilityContext`, `VisibilityProvider`, `useVisibilityContext`, etc
