React Core Changelog
@cfa/react-core
2.0.0
Major Changes
-
#2245
83c97b6Thanks @stevegreco! - UpdatedAvatarfor v2 styling by removing scoped brand theming.- Removed the
colorprop. Avatars now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2225
241cc66Thanks @stevegreco! - UpdatedBadgefor v2 styling by removing scoped brand theming.- Removed the
colorprop. Badges now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2222
89a0583Thanks @stevegreco! - UpdatedButtonandLinkButtonfor v2 styling and variant naming.- Renamed variants to
primary,secondary, andtertiary(replacingfilled,outlined, andtext). - Removed the
colorprop. Buttons now inherit brand colors from the surrounding app theme. - Changed the default
sizefromlgtomd. Buttons without an explicitsizerender at medium height (40px) instead of large (48px). - Updated border width and small-size label typography to match v2 specs.
Migration:
// Before<Button variant="filled" color="secondary">Save</Button><Button variant="outlined">Cancel</Button><Button variant="text">Dismiss</Button>// After<Button variant="primary">Save</Button><Button variant="secondary">Cancel</Button><Button variant="tertiary">Dismiss</Button>Removing
colordoes not change the button variant.color="secondary"alone should becomevariant="primary"withcolorremoved, notvariant="secondary".If you relied on the previous implicit large size, add
size="lg":// Before (implicit large)<Button>Save</Button>// After (explicit large)<Button size="lg">Save</Button>See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Renamed variants to
-
#2353
66e67bbThanks @mitchellcarroll! - Graduated calendar primitives from experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_Calendar→CalendarUNSTABLE_RangeCalendar→RangeCalendarUNSTABLE_CalendarGrid→CalendarGridUNSTABLE_CalendarCell→CalendarCell- Corresponding
*Propstypes renamed the same way
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2248
6dc1e69Thanks @stevegreco! - UpdatedCalendarandRangeCalendarfor v2 styling by removing scoped brand theming.- Removed hard-coded
data-theme="cfa-navy"fromCalendarandRangeCalendar. Calendars now inherit brand colors from the surrounding app theme. DatePickerandDateRangePickerinherit the same behavior through their calendar popovers.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed hard-coded
-
#2315
1a8f6dfThanks @stevegreco! - UpdatedCartInputfor v2 styling by removing scoped brand theming.- Removed the
colorprop. Cart inputs now inherit brand colors from the surrounding app theme. - Default
sizeis nowmd(waslg). Addsize="lg"to keep the previous implicit height. - Visual design updated to match v2 form field specs: form field border radius, default text color, and
IconButtonincrement/decrement controls. - Read-only state styling aligns with other v2 form fields.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2236
a5eb65fThanks @stevegreco! - UpdatedCheckboxfor v2 styling by removing scoped brand theming and the success state.- Checkboxes now inherit brand colors from the surrounding app theme.
- Removed the
isSuccessprop and success styling. - Default, hover, focus, disabled, invalid, and read-only states are unchanged.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2376
13514f2Thanks @stevegreco! - Removed theboldvariant fromChip.variantnow accepts only"subtle"(default) and"outlined".- Remove
variant="bold"usages or switch tovariant="subtle"orvariant="outlined".
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2247
85ff504Thanks @stevegreco! - UpdatedChipfor v2 styling by renaming filled to subtle.- Removed
color="navy". - Renamed
variant="filled"tovariant="subtle", which is now the default.outlinedis unchanged. - Removed hard-coded
data-themescoping from chips. Chips now inherit brand colors from the surrounding app theme. - Updated
success,warning, anderrorstyling to match the v2 Figma spec.
Migration:
// Before<Chip variant="filled" color="navy">Label</Chip>// After. Drop navy. Use subtle, or omit variant, for the old filled look.<Chip variant="subtle">Label</Chip>See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed
-
#2390
7270090Thanks @mitchellcarroll! - UpdatedComboboxfor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) onCombobox.RootandCombobox.Input. Rootsizesizes the trigger and list;Combobox.Inputsizeoverrides the trigger only. - Deprecated
compact. It compiles but no longer applies styles. Usesize="sm"for the smallest variant; the oldcompactheight maps tosize="md". Addsize="lg"to keep the previous default trigger height.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2255
a0edf0eThanks @stevegreco! - UpdatedComboboxfor v2 by removing the success state and aligning with React Aria’s selection API.- Removed the
isSuccessprop and success styling. - Renamed
ComboboxClearButtonpropstoComboboxClearButtonPropsto matchSelectClearButtonPropsnaming. - Renamed
selectedKey/defaultSelectedKey/onSelectionChangetovalue/defaultValue/onChange.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2357
097fc27Thanks @mitchellcarroll! - Graduated date and time field components from experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_DateField→DateFieldUNSTABLE_DateRangePicker→DateRangePickerUNSTABLE_DateRangeField→DateRangeFieldUNSTABLE_TimeInput→TimeInput- Corresponding
*Propstypes were already unprefixed
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2386
363a7c4Thanks @mitchellcarroll! - UpdatedDateFieldandDatePickerfor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) toDateField.InputGroupandDatePickerto control field height, padding, and segment typography. - Default height is now 40px (
md). Passsize="lg"to keep the previous ~48px default. - Deprecated
compact. It compiles but no longer applies styles. Usesize="md"for the old compact height; usesize="sm"for the smallest variant.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2387
a3e0ba1Thanks @mitchellcarroll! - UpdatedDateRangeFieldandDateRangePickerfor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) toDateRangeField.InputGroupandDateRangePickerto control field height, padding, and segment typography. - Default height is now 40px (
md). Passsize="lg"to keep the previous ~48px default. - Deprecated
compact. It compiles but no longer applies styles. Usesize="md"for the old compact height; usesize="sm"for the smallest variant.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2352
0d66030Thanks @mitchellcarroll! - Date utilities from@internationalized/datenow live on@cfa/react-core/dates, not the root or/serverentries.- Import
parseDate,CalendarDate,today,getLocalTimeZone, and related helpers from@cfa/react-core/dates. - Component imports from
@cfa/react-corestay the same.
// Beforeimport { DatePicker, parseDate } from "@cfa/react-core";// Afterimport { DatePicker } from "@cfa/react-core";import { parseDate } from "@cfa/react-core/dates";See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Import
-
#2251
a12c24aThanks @stevegreco! - UpdatedDividerfor v2 styling with a bold default and a new subtle option.- The default divider now uses a bold border treatment.
- Added
variant="subtle"for the previous lighter default appearance. Menu.Dividerdefaults tovariant="subtle"so menu dividers are unchanged.
Migration:
// Before<Divider />// After. Keep the previous lighter look.<Divider variant="subtle" />See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2264
e454d88Thanks @stevegreco! - Updated form field components for v2 to showdescriptionanderrorMessagetogether when a field is invalid.descriptionanderrorMessagenow render together whenisInvalidis true, with the error above the description.- Applies to
TextInput,TextAreaInput,NumberInput,SearchInput,TimeInput,DatePicker,DateRangePicker,Checkbox,CheckboxGroup,RadioGroup,Switch, and theCartInputrecipe. - On
TextInputandTextAreaInput, character count remains top-right when both messages are visible. - Review layouts if you previously relied on the description disappearing when invalid.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2259
d3efb0eThanks @stevegreco! - UpdatedGridListfor v2 styling by removing scoped brand theming.- Removed hard-coded
data-theme="cfa-navy"fromGridList.Root. Grid lists now inherit brand colors from the surrounding app theme. - Selected items now use label font-weight in addition to the selected background.
- Disabled items now use the disabled background and text colors.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed hard-coded
-
#2260
b669351Thanks @stevegreco! - UpdatedIconButtonandLinkIconButtonfor v2 styling aligned withButton.- Added
variantprop (primary,secondary,tertiary,destructive) matchingButtonsemantics.destructiveis new. There was nocolor="destructive"equivalent. - Removed the
colorprop. Icon buttons now inherit brand colors from the surrounding app theme. - Changed the default
sizefrommdtoxs. Updated sizes toxs,sm,md, andlg.xlis removed. - Default variant is
tertiary(replacescolor="gray"). - Icon buttons render as squares at the same height as their
Buttoncounterparts where sizes align.
Migration:
// Before<IconButton color="gray" size="xs"><Close /></IconButton><IconButton color="primary" size="md"><Download /></IconButton><IconButton aria-label="Close"><Close /></IconButton> // implicit md + gray// After<IconButton variant="tertiary"><Close /></IconButton><IconButton variant="tertiary" size="md"><Download /></IconButton><IconButton aria-label="Close" size="md"><Close /></IconButton>Previous
color="primary"andcolor="secondary"were brand-colored ghost icons. Usevariant="tertiary". For filled or outlined icon buttons, usevariant="primary"orvariant="secondary".For icon buttons on knockout or dark surfaces, replace
color="white"with a CSS override:.my-surface {--icon-button-content: var(--ds-semantic-color-content-knockout);}See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2378
957606cThanks @mitchellcarroll! - UpdatedInput,TextInput,SearchInput, andNumberInputfor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) to control height, padding, and typography.SearchInputalso sizes the search icon and clear button. - Default height is now 40px (
md). Passsize="lg"to keep the previous 48px default. - Deprecated
compact. It compiles but no longer applies styles.compact={false}is also a no-op. Usesize="sm"for the smallest variant. The oldcompactheight maps tosize="md".
<TextInput label="Name" size="lg" />See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2281
2dc4101Thanks @stevegreco! - UpdatedInputfor v2 by removing the success state.- Removed the
isSuccessprop and success styling. Combobox.InputextendsInputProps, so it no longer acceptsisSuccesseither.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2244
4c83a04Thanks @stevegreco! - UpdatedListBoxfor v2 styling by removing scoped brand theming.- Removed hard-coded
data-theme="cfa-navy"fromListBox.Root. List boxes now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed hard-coded
-
#2262
9d8e3f1Thanks @stevegreco! - UpdatedLoadingIndicatorfor v2 styling with color variants.- Added
variantprop:"brand"(default),"dark", and"light". isDisabledcontinues to apply muted gray styling and overrides the active variant.- Default
variant="brand"preserves the existing appearance for current usage.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2249
d8e3064Thanks @stevegreco! - UpdatedMenufor v2 styling by removing scoped brand theming.- Removed hard-coded
data-theme="cfa-navy"fromMenu.Popover. Menus now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed hard-coded
-
#2279
fb5171aThanks @stevegreco! - UpdatedNumberInputfor v2 by removing the success state.- Removed the
isSuccessprop and success styling.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2291
b9b10a5Thanks @mitchellcarroll! - UpdatedPageLoaderfor v2 styling by removing scoped brand theming.- Removed the
colorprop. Page loaders now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2413
584ef62Thanks @stevegreco! - GraduatedPanelfrom experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_Panel→PanelUNSTABLE_PanelProps→PanelPropsUNSTABLE_PanelProviderProps→PanelProviderPropsUNSTABLE_PanelTriggerProps→PanelTriggerPropsUNSTABLE_PanelInsetProps→PanelInsetPropsUNSTABLE_PanelHeaderProps→PanelHeaderPropsUNSTABLE_PanelFooterProps→PanelFooterPropsUNSTABLE_PanelContentProps→PanelContentPropsUNSTABLE_PanelSeparatorProps→PanelSeparatorPropsUNSTABLE_PanelLayout→PanelLayoutUNSTABLE_PanelSide→PanelSideUNSTABLE_PanelContextProps→PanelContextProps
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2252
3be855aThanks @stevegreco! - UpdatedProgressBarfor v2 styling by removing color options and using semantic fill colors.- Removed the
colorprop. - Default fill uses the info semantic color and switches to success green when the value reaches
maxValue. - Exposed
--progress-bar-fill-colorto override the in-progress fill color.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2414
1244430Thanks @stevegreco! - GraduatedProgressIndicatorfrom experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_ProgressIndicator→ProgressIndicatorProgressIndicatorPropsandProgressIndicatorStepPropswere already unprefixed.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2237
6ef0f67Thanks @stevegreco! - UpdatedRadioGroupfor v2 styling by removing scoped brand theming and the success state.- Removed hard-coded
data-theme="cfa-navy"fromRadioGroup. Radio groups now inherit brand colors from the surrounding app theme. - Removed the
isSuccessprop and success styling.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed hard-coded
-
#2305
5a40a63Thanks @mitchellcarroll! - Removed the@cfa/design-tokensdependency from@cfa/react-core.index.cssno longer imports@cfa/design-tokens/dist/tokens-no-fonts.css. Components rely solely on@cfa/design-tokens-core(--ds-*tokens).- If your app still uses legacy
--cfa-*tokens and previously relied on react-core’s CSS import to load them, import@cfa/design-tokensdirectly in your app.
-
#2266
94dd282Thanks @mitchellcarroll! - UpdatedSearchInputfor v2 by removing the success state.- Removed the
isSuccessprop and success styling.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2390
7270090Thanks @mitchellcarroll! - UpdatedSelectfor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) onSelect.RootandSelect.Button. Rootsizesizes the trigger and list;Select.Buttonsizeoverrides the trigger only. - Deprecated
compact. It compiles but no longer applies styles. Usesize="sm"for the smallest variant; the oldcompactheight maps tosize="md". Addsize="lg"to keep the previous default trigger height.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2267
6fe0ff1Thanks @mitchellcarroll! - UpdatedSelectfor v2 by removing the success state and aligning with React Aria’s selection API.- Removed the
isSuccessprop and success styling. - Renamed
selectedKey/defaultSelectedKey/onSelectionChangetovalue/defaultValue/onChange.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2367
e642611Thanks @mitchellcarroll! - GraduatedSidebarNavfrom experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_SidebarNav→SidebarNavUNSTABLE_SidebarNavRootProps→SidebarNavRootPropsUNSTABLE_SidebarNavItemProps→SidebarNavItemPropsUNSTABLE_SidebarNavAccordionItemProps→SidebarNavAccordionItemProps
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2256
748f54dThanks @stevegreco! - UpdatedSidebarNavfor v2 styling by removing scoped brand theming.- Removed the
colorprop fromSidebarNav.Root,SidebarNav.NavItem, andSidebarNav.AccordionItem. Sidebar navigation now inherits brand colors from the surrounding app theme. - Removed hard-coded
data-themescoping from sidebar navigation items.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2405
d682e9cThanks @mitchellcarroll! - GraduatedSideNavigationfrom experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_SideNavigation→SideNavigationUNSTABLE_SideNavigationProps→SideNavigationPropsUNSTABLE_SideNavigationTriggerProps→SideNavigationTriggerPropsUNSTABLE_SideNavigationDataItem→SideNavigationDataItemUNSTABLE_SideNavigationLinkItem→SideNavigationLinkItemUNSTABLE_SideNavigationNestedLinkItem→SideNavigationNestedLinkItemUNSTABLE_SideNavigationSectionItem→SideNavigationSectionItemUNSTABLE_SideNavigationDividerItem→SideNavigationDividerItem
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2253
8dbb8fcThanks @stevegreco! - UpdatedSliderfor v2 styling by removing scoped brand theming.- Removed the
colorprop. Sliders now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2254
0896073Thanks @stevegreco! - UpdatedStepperfor v2 styling by removing scoped brand theming.- Removed the
colorprop. Steppers now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2240
42a9620Thanks @stevegreco! - UpdatedTablefor v2 styling by stabilizing the export and removing scoped brand theming.UNSTABLE_Tableis now exported asTable.- Removed hard-coded
data-theme="cfa-navy"fromTable.Root. Tables now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2241
abdbe35Thanks @stevegreco! - UpdatedTabsfor v2 styling by removing scoped brand theming and aligning sizing with Figma.- Removed the
colorprop. Tabs now inherit brand colors from the surrounding app theme. - Updated tab sizing to match the v2 Figma spec.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2263
ea4cb65Thanks @stevegreco! - UpdatedTagGroupfor v2 styling by removing scoped brand theming.- Tags now inherit brand colors from the surrounding app theme.
- Updated tag shape, padding, and interaction states to match the v2 Figma spec.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2278
8c73f8cThanks @stevegreco! - UpdatedTextfor v2 by removing the success state.- Removed the
isSuccessprop and success styling. Select.Description,Combobox.Description,Slider.Description,TagGroup.Description,DatePicker.Description, andDateRangePicker.Descriptionno longer acceptisSuccess.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2375
4333a96Thanks @mitchellcarroll! - UpdatedTextAreafor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) to control padding and typography. - Deprecated
compact. It compiles but no longer applies styles; usesize="sm"instead. Addsize="lg"to keep the previous default padding.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2231
4976423Thanks @mitchellcarroll! - UpdatedTextAreafor v2 by removing the success state.- Removed the
isSuccessprop and success styling.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2375
4333a96Thanks @mitchellcarroll! - UpdatedTextAreaInputfor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) to control padding and typography. - Deprecated
compact. It compiles but no longer applies styles; usesize="sm"instead. Addsize="lg"to keep the previous default padding.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2235
1454ff6Thanks @stevegreco! - UpdatedTextAreaInputfor v2 by removing the success state.- Removed the
isSuccessprop and success styling.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2230
7e86326Thanks @mitchellcarroll! - UpdatedTextInputfor v2 by removing the success state.- Removed the
isSuccessprop and success styling.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2389
299181eThanks @mitchellcarroll! - RemovedThemeProviderand the@cfa/react-core/themeentry point.- Import
@cfa/react-core/index.cssdirectly in your app entry or global stylesheet instead of wrapping withThemeProvider. - The
@cfa/react-core/themesubpath export is no longer available. - If your app already imports
@cfa/react-core/index.css, remove theThemeProviderwrapper only.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Import
-
#2388
1ef0b49Thanks @mitchellcarroll! - UpdatedTimeInputfor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) to control field height, padding, and segment typography. - Default height is now 40px (
md). Passsize="lg"to keep the previous ~48px default. - Deprecated
compact. It compiles but no longer applies styles. Usesize="md"for the old compact height; usesize="sm"for the smallest variant.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2271
eeaa854Thanks @stevegreco! - UpdatedToggleButtonandToggleButtonGroupfor v2 styling aligned withButtonandIconButton.- Updated
sm,md, andlgsizes to matchButtonheights of 32px, 40px, and 48px. Borders are 1px. Label typography islabel-smallforsmandlabel-defaultformdandlg. - Selected state no longer overrides text color, and pressed/selected-hover styling was removed.
ToggleButtonGroupsizenow controls sizing for every child button. IndividualToggleButtonsizeprops are ignored inside a group.
Migration:
// Before. Per-button size inside a group.<ToggleButtonGroup><ToggleButton size="sm" id="day">Day</ToggleButton><ToggleButton size="lg" id="week">Week</ToggleButton></ToggleButtonGroup>// After. Set size on the group.<ToggleButtonGroup size="md"><ToggleButton id="day">Day</ToggleButton><ToggleButton id="week">Week</ToggleButton></ToggleButtonGroup>See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Updated
-
#2414
1244430Thanks @stevegreco! - GraduatedUserInfofrom experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_UserInfo→UserInfoUNSTABLE_UserInfoProps→UserInfoProps
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2413
584ef62Thanks @stevegreco! - GraduatedVirtualizerand layout primitives from experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_Virtualizer→VirtualizerUNSTABLE_TableLayout→TableLayoutUNSTABLE_GridLayout→GridLayoutUNSTABLE_ListLayout→ListLayoutUNSTABLE_WaterfallLayout→WaterfallLayout
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide.
Minor Changes
-
#2083
862a9e6Thanks @stevegreco! - Added programmatic query APIs and an MCP server so agents can look up CFA components, props, tokens, and icons without reading source.@cfa/design-system-mcpships thecfa-design-system-mcpserver withlist_components,get_component_props,get_component_guidance,search_tokens,suggest_token,search_icons, andget_icon.@cfa/react-core/queryexportslistComponents,getComponentProps, andgetComponentGuidance.@cfa/design-tokens-core/queryexportssearchTokensandsuggestTokens.@cfa/icons/queryexportssearchIconsandgetIcon.
-
#2403
038cb38Thanks @mitchellcarroll! - Added an optionalcolorprop toAvatarfor accent fallback styling.- Omit
colorto keep the current behavior: avatars inherit brand colors from the surrounding app theme. - Set
colorto a brand accent (red,navy,blue, and others) to distinguish people in a list. - This is not the v1
primary/secondarytheme prop.
<Avatar.Root color="navy"><Avatar.Fallback>JD</Avatar.Fallback></Avatar.Root> - Omit
-
#2246
262809dThanks @stevegreco! - Addedalignmentprop toBannerMessagefor left or center content alignment.- New
alignmentprop accepts"left"or"center"(default"center"). - Use
alignment="left"when the icon and message should align to the start of the banner.
- New
-
#2379
947c41bThanks @stevegreco! - UpdatedDrawerandModallayout to match design specifications.- Added
Drawer.Title,Drawer.Content, andDrawer.Footerfor composed layouts with sticky footer support. - Positioned
DrawerandModalclose buttons absolutely within container padding. - Updated
Drawertray padding to24pxwith16pxgap between sections. - Aligned
Modaldialog padding and section spacing to design tokens. - Documented the composition:
Title,Content, andFooteras direct children ofModal.DialogorDrawer.Tray. Seepackages/react-core/V2-MIGRATION-GUIDE.md.
- Added
-
#2299
38c6955Thanks @mitchellcarroll! - Added a sharedgetInitialsutility for consistent name-to-initials formatting.- New
getInitials(name)export derives up to two uppercase initials from a display name
import { Avatar, getInitials } from "@cfa/react-core";<Avatar.Fallback>{getInitials("Truett Cathy")}</Avatar.Fallback>;getInitials("Mary Ann Smith"); // "MS" - New
-
#2336
851de02Thanks @stevegreco! - Added officialListBoxgrid layout support solayout="grid"works without custom CSS.layout="grid"renders a 2-column grid by default and keeps React Aria 2D keyboard navigation.- Set
gridColumnsto change the column count. The same grid works inside aSwitcherpopover. - Override
--list-box-grid-column-widthto change column width, or--list-box-grid-template-columnsto replace the grid template. - Sections stay grouped. Each section is its own grid, and section headers span all columns.
<ListBox.Root layout="grid" aria-label="Apps"><ListBox.Item id="ops">Operator Portal</ListBox.Item><ListBox.Item id="admin">Admin Console</ListBox.Item></ListBox.Root> -
#2330
9081840Thanks @stevegreco! - AddedListBox.LeadingIconso list items can align a leading icon with the title when a description is present.- Place
ListBox.LeadingIconinsideListBox.Iteminstead of a custom flex wrapper. - The same component is available as
Switcher.LeadingIcon,Select.LeadingIcon, andCombobox.LeadingIcon. - Icon size defaults to 16px. Override with
classNameorstyleonLeadingIcon. - List items with
hrefinherit item color and no longer show a browser underline.
<ListBox.Item textValue={item.name}><ListBox.LeadingIcon><Restaurant size="sm" /></ListBox.LeadingIcon><div><Text slot="label">{item.name}</Text><Text slot="description">{item.description}</Text></div></ListBox.Item> - Place
-
#2374
5bd0950Thanks @stevegreco! - Addedsizeprop toListBox.Rootfor small, medium, and large list item styling.- Pass
size="sm",size="md"(default), orsize="lg"to control item height, padding, and label typography. - Selected items use bold body weight per updated Figma specs.
- Select, Combobox, and Switcher are unchanged in this release; they continue to use the default medium size.
<ListBox.Root aria-label="Options" size="sm"><ListBox.Item id="1">Item 1</ListBox.Item></ListBox.Root> - Pass
-
#2395
cb0bebeThanks @mitchellcarroll! - AddedPopover.HoverRootfor interactive hover previews.- Use
Popover.HoverRootinstead ofPopover.Rootto open a non-modal popover on hover, keyboard focus, or long press so preview content can include links and buttons Popover.Rootstays press-only, so existing usage is unchanged- Pass
inlineonLinkwhen the trigger sits in paragraph text
<Popover.HoverRoot><Link href={href} inline>@{handle}</Link><Popover.Panel>Preview content</Popover.Panel></Popover.HoverRoot> - Use
-
#2318
fb06242Thanks @stevegreco! - Added aSwitchercomponent for navigating between apps or contexts.- New composable API:
Switcher.Root,Switcher.Trigger,Switcher.Value,Switcher.List, andSwitcher.Item - Supports trigger sizes (
sm,md,lg), stack and grid list layouts, and optional search filtering viauseFilter
import { Switcher } from "@cfa/react-core";<Switcher.Rootaria-label="Switch app"defaultValue="operator-portal"placeholder="Select an app"><Switcher.Trigger size="md"><Switcher.Value /></Switcher.Trigger><Switcher.List items={apps}>{(item) => <Switcher.Item id={item.id}>{item.name}</Switcher.Item>}</Switcher.List></Switcher.Root>; - New composable API:
Patch Changes
-
#2227
e43c79fThanks @stevegreco! - UpdatedBreadcrumbsseparator spacing for v2 styling.- Breadcrumb separators now use 8px spacing (
--ds-semantic-spacing-md) instead of 16px.
- Breadcrumb separators now use 8px spacing (
-
#2286
bf6530eThanks @stevegreco! - FixedButtonandIconButtonvariantprop documentation to list literal variant values instead of opaque type aliases.variantprop-docs now show"primary" | "secondary" | "tertiary" | "destructive"- Removed
ButtonVariantandIconButtonVariantexports; useButtonProps["variant"]orIconButtonProps["variant"]if needed - Updated generated docs for components that compose these buttons
-
#2331
a30b50fThanks @mitchellcarroll! - FixedCardmissing the raised elevation box-shadow.Card.Rootnow displays the raised elevation shadow by default.- Applies to both outlined and non-outlined variants.
- Aligns Card appearance with the Web Card spec.
-
#2339
b83b4e6Thanks @mitchellcarroll! - Fixed default accessible names forCartInputincrement and decrement buttons.- Stepper buttons default to “Decrease quantity” and “Increase quantity” when
decrementAriaLabelandincrementAriaLabelare omitted. incrementAriaLabelanddecrementAriaLabelcan still be customized.
- Stepper buttons default to “Decrease quantity” and “Increase quantity” when
-
#2342
ab9b38aThanks @mitchellcarroll! - FixedComboboxignoringshouldFliponCombobox.Root.Combobox.Popovernow honorsshouldFlipfromCombobox.Root, matchingSelectbehavior- Popover placement near viewport edges now respects the root
shouldFlipsetting as documented
-
#2364
ba32b67Thanks @stevegreco! - Convenience inputs no longer render an empty label when you omit thelabelprop.- Applies to
TextInput,TextAreaInput,NumberInput,SearchInput, andTimeInput. - Use
aria-labeloraria-labelledbywhen you skip the visible label.
- Applies to
-
#2355
db8fe23Thanks @stevegreco! - Renamed semantic background tokens and Tailwind surface utilities.color.background.defaultis now page gray. White surfaces usecolor.background.surface.- Replace
bg-raised-defaultwithbg-surface,bg-raised-hoverwithbg-surface-hover, andbg-raised-activewithbg-surface-active. - Replace
bg-overlay-backdrop-defaultwithbg-overlay. Overlay panels usebg-surface. - Removed
bg-sunken-defaultand overflow shadow utilities. - React Core components use the new tokens internally. Built-in component appearance is unchanged.
Update custom CSS or Tailwind classes that used the old names. See
packages/react-core/V2-MIGRATION-GUIDE.md. -
#2383
ded6833Thanks @stevegreco! - Stopped read-only form field labels from flashing on iOS when the field is tapped.- Suppresses the native iOS tap highlight on field labels and text inputs so focus no longer paints a brief gray flash above read-only values.
- Read-only focus rings are unchanged for keyboard and copy access.
- Applies to labeled text fields such as
TextInputandTextAreaInput.
-
#2383
ded6833Thanks @stevegreco! - Stopped form fields from flashing a gray hover state when tapped on touch devices.- Hover border and background now apply only when the pointer can hover, so iOS taps go straight to the focus ring.
- Desktop hover is unchanged.
- Applies to
TextInput,SearchInput,NumberInput,ComboBox,TextArea,Select,DatePicker,DateRangePicker, andTimeInput.
-
#2398
984870aThanks @mitchellcarroll! - Added documentation pages forForm,Text, andFieldError.- Import, live examples, and props now live at
/components/form/react,/components/text/react, and/components/fielderror/react - Convenience fields such as
TextInputstill renderFieldErrorviaerrorMessage; the FieldError page shows the composition pattern for custom fields
- Import, live examples, and props now live at
-
#2298
61cf495Thanks @mitchellcarroll! - Removed the unsupportedinlineprop fromLinkButton’s TypeScript API and prop docs.inlinewas inherited fromLinkPropsbut never applied byLinkButton- Use
Linkwhen you need inline navigation within body copy
-
#2330
9081840Thanks @stevegreco! - FixedListBox.Itemrest-state background so items use the default surface color.- Items use the default surface color instead of a transparent background.
- Hover is unchanged.
- Also applies to Select, Combobox, and Switcher list items.
-
#2338
9b4cd55Thanks @mitchellcarroll! - FixedLoadingIndicatorandPageLoaderto respectprefers-reduced-motion, matching Skeleton.- Spinners stop when the user has reduced motion enabled.
LoadingIndicatorshows a static dot ring instead.
-
#2341
e6847b4Thanks @mitchellcarroll! - CorrectedModal.OverlayandDrawer.OverlayAPI and stacking documentation.- Removed
isCloseButtonHiddenfromModal.OverlayandDrawer.Overlay. UseModal.DialogorDrawer.Trayto hide the close button. - If you passed
isCloseButtonHiddentoModal.OverlayorDrawer.Overlay, move it toModal.DialogorDrawer.Tray. It never affected Overlay at runtime. - Updated Modal and Drawer docs. Overlay is for optional custom backdrop styling. For stacking conflicts, set
isolation: isolateon the app wrapper instead of overlayz-index.
- Removed
-
#2392
bd16f2aThanks @stevegreco! - AlignedPanelmobile drawer backdrop with the shared overlay background token.Panelbackdrop now uses the same overlay background token asModalandDrawer.- Mobile drawer dimming matches other overlay surfaces when design tokens are loaded.
-
#2369
0ca0d83Thanks @mitchellcarroll! - Added a dedicatedRangeCalendardocumentation page.- Range selection examples and props now live at
/components/rangecalendar/react - The Calendar page links to RangeCalendar instead of documenting it inline
- Range selection examples and props now live at
-
#2411
b60c8aaThanks @stevegreco! - Updated selected styling for calendars to match the new tokens.Calendarselected days use the solid selected fill and selected text color.RangeCalendarshows a subtle track between dates, with solid rounded endpoints. Focus rings on a selected range sit on the day, not the track.Button,IconButton,TagGroup, andListBoxuse the new selectable and per-variant action tokens. Selected-hover treatments that depended on removed tokens are gone.
-
#2356
c0ef04fThanks @seanmcquaid! - Importing a client component from a Server Component now surfaces a more descriptive error.- Client components are marked client-only, so frameworks propagate a clearer error instead of a generic Server Component failure.
-
#2401
6988570Thanks @stevegreco! - Restored design tokens, fonts, and global styles in the publishedindex.css.@cfa/react-core/index.cssagain includes@cfa/design-tokens-corethemes, web fonts, and the package globals.- No adopter import changes. Apps that already import
@cfa/react-core/index.cssget the missing theme variables back.
-
#2238
0774f0cThanks @stevegreco! - Aligned component styling with updated design tokens.Chipgray filled styling now uses the renamed chip background token.GridListandMenuselected items now use the new selected-state background token.
-
#2333
33244c7Thanks @mitchellcarroll! - FixedSliderand compactProgressBartrack backgrounds not updating when theme track colors are customized. -
#2334
cee225aThanks @mitchellcarroll! - FixedSearchInputnot showing the required indicator on its label.SearchInputnow passesisRequiredtoLabel, so the required asterisk anddata-requiredmatchTextInputandNumberInput.
-
#2104
1e1abbfThanks @mitchellcarroll! - Added experimental Skeleton loading placeholders behindUNSTABLE_exports.UNSTABLE_Skeletonprovides loading context witharia-busyandinertwhileisLoadingis true.- Supported components (
Text,Heading,Link,Card,Avatar,Table,Button,ProgressBar, and others) readuseSkeleton()and apply their own skeleton styles. SkeletonPrimitiveprovides manual placeholder blocks withwidth,height, andborderRadiusfor layouts that are not built from wired components.- Export
useSkeleton,useSkeletonClassName, andgetSkeletonClassNamefor custom components that should participate in the same loading shell.
-
Updated dependencies [
862a9e6,0c07914,d5e4b85,b669351,b60c8aa,0774f0c,9855ed5,39e5545,db8fe23,ad0d7fe,13325cf,14a6f0b,be66491,d9d764a]:- @cfa/[email protected]
- @cfa/[email protected]
2.0.0-beta.7
Major Changes
-
#2376
13514f2Thanks @stevegreco! - Removed theboldvariant fromChipto align with design system guidance.variantnow accepts only"subtle"(default) and"outlined".- Remove
variant="bold"usages or switch tovariant="subtle"orvariant="outlined".
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2390
7270090Thanks @mitchellcarroll! - UpdatedComboboxfor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) onCombobox.RootandCombobox.Input. Rootsizesizes the trigger and list;Combobox.Inputsizeoverrides the trigger only. - Deprecated
compact. It compiles but no longer applies styles. Usesize="sm"for the smallest variant; the oldcompactheight maps tosize="md". Addsize="lg"to keep the previous default trigger height.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2386
363a7c4Thanks @mitchellcarroll! - UpdatedDateFieldandDatePickerby adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) toDateField.InputGroupandDatePickerto control field height, padding, and segment typography. - Default height is now 40px (
md). Passsize="lg"to keep the previous ~48px default. - Deprecated
compact. It compiles but no longer applies styles. Usesize="md"for the old compact height; usesize="sm"for the smallest variant.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2387
a3e0ba1Thanks @mitchellcarroll! - UpdatedDateRangeFieldandDateRangePickerby adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) toDateRangeField.InputGroupandDateRangePickerto control field height, padding, and segment typography. - Default height is now 40px (
md). Passsize="lg"to keep the previous ~48px default. - Deprecated
compact. It compiles but no longer applies styles. Usesize="md"for the old compact height; usesize="sm"for the smallest variant.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2378
957606cThanks @mitchellcarroll! - UpdatedInput,TextInput,SearchInput, andNumberInputfor v2 by adding size variants.- Added
size(sm|md|lg, defaultmd) to control height, padding, and typography.SearchInputalso sizes the search icon and clear button. - Default height is now 40px (
md). Passsize="lg"to keep the previous 48px default. - Deprecated
compact. It compiles but no longer applies styles.compact={false}is also a no-op. Usesize="sm"for the smallest variant; the oldcompactheight maps tosize="md".
<TextInput label="Name" size="lg" />See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2413
584ef62Thanks @stevegreco! - GraduatedPanelfrom experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_Panel→PanelUNSTABLE_PanelProps→PanelPropsUNSTABLE_PanelProviderProps→PanelProviderPropsUNSTABLE_PanelTriggerProps→PanelTriggerPropsUNSTABLE_PanelInsetProps→PanelInsetPropsUNSTABLE_PanelHeaderProps→PanelHeaderPropsUNSTABLE_PanelFooterProps→PanelFooterPropsUNSTABLE_PanelContentProps→PanelContentPropsUNSTABLE_PanelSeparatorProps→PanelSeparatorPropsUNSTABLE_PanelLayout→PanelLayoutUNSTABLE_PanelSide→PanelSideUNSTABLE_PanelContextProps→PanelContextProps
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2414
1244430Thanks @stevegreco! - GraduatedProgressIndicatorfrom experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_ProgressIndicator→ProgressIndicator
ProgressIndicatorPropsandProgressIndicatorStepPropswere already unprefixed.See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2305
5a40a63Thanks @mitchellcarroll! - Removed the@cfa/design-tokensdependency from@cfa/react-core.index.cssno longer imports@cfa/design-tokens/dist/tokens-no-fonts.css. Components rely solely on@cfa/design-tokens-core(--ds-*tokens).- If your app still uses legacy
--cfa-*tokens and previously relied on react-core’s CSS import to load them, import@cfa/design-tokensdirectly in your app.
-
#2390
7270090Thanks @mitchellcarroll! - UpdatedSelectfor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) onSelect.RootandSelect.Button. Rootsizesizes the trigger and list;Select.Buttonsizeoverrides the trigger only. - Deprecated
compact. It compiles but no longer applies styles. Usesize="sm"for the smallest variant; the oldcompactheight maps tosize="md". Addsize="lg"to keep the previous default trigger height.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2367
e642611Thanks @mitchellcarroll! - GraduatedSidebarNavfrom experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_SidebarNav→SidebarNavUNSTABLE_SidebarNavRootProps→SidebarNavRootPropsUNSTABLE_SidebarNavItemProps→SidebarNavItemPropsUNSTABLE_SidebarNavAccordionItemProps→SidebarNavAccordionItemProps
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2405
d682e9cThanks @mitchellcarroll! - GraduatedSideNavigationfrom experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_SideNavigation→SideNavigationUNSTABLE_SideNavigationProps→SideNavigationPropsUNSTABLE_SideNavigationTriggerProps→SideNavigationTriggerPropsUNSTABLE_SideNavigationDataItem→SideNavigationDataItemUNSTABLE_SideNavigationLinkItem→SideNavigationLinkItemUNSTABLE_SideNavigationNestedLinkItem→SideNavigationNestedLinkItemUNSTABLE_SideNavigationSectionItem→SideNavigationSectionItemUNSTABLE_SideNavigationDividerItem→SideNavigationDividerItem
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2375
4333a96Thanks @mitchellcarroll! - UpdatedTextAreafor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) to control padding and typography. - Deprecated
compact. It compiles but no longer applies styles; usesize="sm"instead. Addsize="lg"to keep the previous default padding.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2375
4333a96Thanks @mitchellcarroll! - UpdatedTextAreaInputfor v2 by adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) to control padding and typography. - Deprecated
compact. It compiles but no longer applies styles; usesize="sm"instead. Addsize="lg"to keep the previous default padding.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2389
299181eThanks @mitchellcarroll! - RemovedThemeProviderand the@cfa/react-core/themeentry point.- Import
@cfa/react-core/index.cssdirectly in your app entry or global stylesheet instead of wrapping withThemeProvider. - The
@cfa/react-core/themesubpath export is no longer available. - If your app already imports
@cfa/react-core/index.css, remove theThemeProviderwrapper only.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Import
-
#2388
1ef0b49Thanks @mitchellcarroll! - UpdatedTimeInputby adding size variants and deprecatingcompact.- Added
size(sm|md|lg, defaultmd) to control field height, padding, and segment typography. - Default height is now 40px (
md). Passsize="lg"to keep the previous ~48px default. - Deprecated
compact. It compiles but no longer applies styles. Usesize="md"for the old compact height; usesize="sm"for the smallest variant.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2414
1244430Thanks @stevegreco! - GraduatedUserInfofrom experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_UserInfo→UserInfoUNSTABLE_UserInfoProps→UserInfoProps
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2413
584ef62Thanks @stevegreco! - GraduatedVirtualizerand layout primitives from experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_Virtualizer→VirtualizerUNSTABLE_TableLayout→TableLayoutUNSTABLE_GridLayout→GridLayoutUNSTABLE_ListLayout→ListLayoutUNSTABLE_WaterfallLayout→WaterfallLayout
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide.
Minor Changes
-
#2403
038cb38Thanks @mitchellcarroll! - Added an optionalcolorprop toAvatarfor accent fallback styling.- Omit
colorto keep the current behavior: avatars inherit brand colors from the surrounding app theme. - Set
colorto a brand accent (red,navy,blue, and others) to distinguish people in a list. - This is not the v1
primary/secondarytheme prop.
<Avatar.Root color="navy"><Avatar.Fallback>JD</Avatar.Fallback></Avatar.Root> - Omit
-
#2379
947c41bThanks @stevegreco! - UpdatedDrawerandModallayout to match design specifications.- Added
Drawer.Title,Drawer.Content, andDrawer.Footerfor composed layouts with sticky footer support - Positioned
DrawerandModalclose buttons absolutely within container padding - Updated
Drawertray padding to24pxwith16pxgap between sections - Aligned
Modaldialog padding and section spacing to design tokens - Documented canonical composition:
Title,Content, andFooteras direct children ofModal.DialogorDrawer.Tray(see v2 migration guide)
- Added
-
#2374
5bd0950Thanks @stevegreco! - Addedsizeprop toListBox.Rootfor small, medium, and large list item styling.- Pass
size="sm",size="md"(default), orsize="lg"to control item height, padding, and label typography. - Selected items use bold body weight per updated Figma specs.
- Select, Combobox, and Switcher are unchanged in this release; they continue to use the default medium size.
<ListBox.Root aria-label="Options" size="sm"><ListBox.Item id="1">Item 1</ListBox.Item></ListBox.Root> - Pass
-
#2395
cb0bebeThanks @mitchellcarroll! - AddedPopover.HoverRootfor interactive hover previews.- Use
Popover.HoverRootinstead ofPopover.Rootto open a non-modal popover on hover, keyboard focus, or long press so preview content can include links and buttons Popover.Rootstays press-only, so existing usage is unchanged- Pass
inlineonLinkwhen the trigger sits in paragraph text
<Popover.HoverRoot><Link href={href} inline>@{handle}</Link><Popover.Panel>Preview content</Popover.Panel></Popover.HoverRoot> - Use
Patch Changes
-
#2383
ded6833Thanks @stevegreco! - Stopped read-only form field labels from flashing on iOS when the field is tapped.- Suppresses the native iOS tap highlight on field labels and text inputs so focus no longer paints a brief gray flash above read-only values.
- Read-only focus rings are unchanged for keyboard and copy access.
- Applies to labeled text fields such as
TextInputandTextAreaInput.
-
#2383
ded6833Thanks @stevegreco! - Stopped form fields from flashing a gray hover state when tapped on touch devices.- Hover border and background now apply only when the pointer can hover, so iOS taps go straight to the focus ring.
- Desktop hover is unchanged.
- Applies to
TextInput,SearchInput,NumberInput,ComboBox,TextArea,Select,DatePicker,DateRangePicker, andTimeInput.
-
#2398
984870aThanks @mitchellcarroll! - Added documentation pages forForm,Text, andFieldError.- Import, live examples, and props now live at
/components/form/react,/components/text/react, and/components/fielderror/react - Convenience fields such as
TextInputstill renderFieldErrorviaerrorMessage; the FieldError page shows the composition pattern for custom fields
- Import, live examples, and props now live at
-
#2392
bd16f2aThanks @stevegreco! - Aligned Panel mobile drawer backdrop with the shared overlay background token.- Panel backdrop now uses the same overlay background token as Modal and Drawer
- Mobile drawer dimming matches other overlay surfaces when design tokens are loaded
-
#2369
0ca0d83Thanks @mitchellcarroll! - Added a dedicatedRangeCalendardocumentation page.- Range selection examples and props now live at
/components/rangecalendar/react - The Calendar page links to RangeCalendar instead of documenting it inline
- Range selection examples and props now live at
-
#2401
6988570Thanks @stevegreco! - Restored design tokens, fonts, and global styles in the publishedindex.css.@cfa/react-core/index.cssagain includes@cfa/design-tokens-corethemes, web fonts, and the package globals.- No adopter import changes. Apps that already import
@cfa/react-core/index.cssget the missing theme variables back.
-
Updated dependencies [
39e5545,ad0d7fe,be66491]:- @cfa/[email protected]
- @cfa/[email protected]
2.0.0-beta.6
Major Changes
-
#2353
66e67bbThanks @mitchellcarroll! - Graduated calendar primitives from experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_Calendar→CalendarUNSTABLE_RangeCalendar→RangeCalendarUNSTABLE_CalendarGrid→CalendarGridUNSTABLE_CalendarCell→CalendarCell- Corresponding
*Propstypes renamed the same way
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2357
097fc27Thanks @mitchellcarroll! - Graduated date and time field components from experimentalUNSTABLE_*exports to stable unprefixed names.UNSTABLE_DateField→DateFieldUNSTABLE_DateRangePicker→DateRangePickerUNSTABLE_DateRangeField→DateRangeFieldUNSTABLE_TimeInput→TimeInput- Corresponding
*Propstypes were already unprefixed
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2352
0d66030Thanks @mitchellcarroll! - Date utilities from@internationalized/datenow live on a dedicated@cfa/react-core/datessubpath instead of the root and/serverentries.
Minor Changes
-
#2336
851de02Thanks @stevegreco! - Added officialListBoxgrid layout support solayout="grid"works without custom CSS.layout="grid"renders a 2-column grid by default and keeps React Aria 2D keyboard navigation.- Set
gridColumnsto change the column count. The same grid works inside aSwitcherpopover. - Override
--list-box-grid-column-widthto change column width, or--list-box-grid-template-columnsto replace the grid template. - Sections stay grouped. Each section is its own grid, and section headers span all columns.
<ListBox.Root layout="grid" aria-label="Apps"><ListBox.Item id="ops">Operator Portal</ListBox.Item><ListBox.Item id="admin">Admin Console</ListBox.Item></ListBox.Root> -
#2330
9081840Thanks @stevegreco! - AddedListBox.LeadingIconso list items can align a leading icon with the title when a description is present.- Place
ListBox.LeadingIconinsideListBox.Iteminstead of a custom flex wrapper. - The same component is available as
Switcher.LeadingIcon,Select.LeadingIcon, andCombobox.LeadingIcon. - Icon size defaults to 16px. Override with
classNameorstyleonLeadingIcon. - List items with
hrefinherit item color and no longer show a browser underline.
<ListBox.Item textValue={item.name}><ListBox.LeadingIcon><Restaurant size="sm" /></ListBox.LeadingIcon><div><Text slot="label">{item.name}</Text><Text slot="description">{item.description}</Text></div></ListBox.Item> - Place
Patch Changes
-
#2339
b83b4e6Thanks @mitchellcarroll! - Fixed default accessible names forCartInputincrement and decrement buttons.- Stepper buttons default to “Decrease quantity” and “Increase quantity” when
decrementAriaLabelandincrementAriaLabelare omitted. incrementAriaLabelanddecrementAriaLabelcan still be customized.
- Stepper buttons default to “Decrease quantity” and “Increase quantity” when
-
#2342
ab9b38aThanks @mitchellcarroll! - FixedComboboxignoringshouldFliponCombobox.Root.Combobox.Popovernow honorsshouldFlipfromCombobox.Root, matchingSelectbehavior- Popover placement near viewport edges now respects the root
shouldFlipsetting as documented
-
#2364
ba32b67Thanks @stevegreco! - Convenience inputs no longer render an empty label when you omit thelabelprop.- Applies to
TextInput,TextAreaInput,NumberInput,SearchInput, andTimeInput. - Use
aria-labeloraria-labelledbywhen you skip the visible label.
- Applies to
-
#2355
db8fe23Thanks @stevegreco! - Renamed semantic background tokens and Tailwind surface utilities.color.background.defaultis now page gray. White surfaces usecolor.background.surface.- Replace
bg-raised-defaultwithbg-surface,bg-raised-hoverwithbg-surface-hover, andbg-raised-activewithbg-surface-active. - Replace
bg-overlay-backdrop-defaultwithbg-overlay. Overlay panels usebg-surface. - Removed
bg-sunken-defaultand overflow shadow utilities. - React Core components use the new tokens internally. Built-in component appearance is unchanged.
Update custom CSS or Tailwind classes that used the old names. See
V2-MIGRATION-GUIDE.md. -
#2330
9081840Thanks @stevegreco! - FixedListBox.Itemrest-state background so items use the default surface color.- Items now use
var(--ds-semantic-color-background-default)instead of a transparent background. - Hover is unchanged (
background-default-hover). - Also applies to Select, Combobox, and Switcher list items.
- Items now use
-
#2341
e6847b4Thanks @mitchellcarroll! - CorrectedModal.OverlayandDrawer.OverlayAPI and stacking documentation.- Removed
isCloseButtonHiddenfromModal.OverlayandDrawer.Overlay. UseModal.DialogorDrawer.Trayto hide the close button. - If you passed
isCloseButtonHiddentoModal.OverlayorDrawer.Overlay, move it toModal.DialogorDrawer.Tray— it never affected the Overlay at runtime. - Updated Modal and Drawer docs:
Overlayis for optional custom backdrop styling; use app-wrapperisolation: isolatefor stacking conflicts instead of overlayz-index.
- Removed
-
#2356
c0ef04fThanks @seanmcquaid! - Importing a client component from a Server Component now surfaces a more descriptive error.- Client components are marked client-only, so frameworks propagate a clearer error instead of a generic Server Component failure.
-
Updated dependencies [
db8fe23,14a6f0b]:- @cfa/[email protected]
- @cfa/[email protected]
2.0.0-beta.5
Minor Changes
-
#2083
862a9e6Thanks @stevegreco! - Add programmatic query APIs and an MCP server so agents and tooling can discover CFA components, props, tokens, and icons without reading source.@cfa/design-system-mcp: New MCP server (cfa-design-system-mcp) exposinglist_components,get_component_props,get_component_guidance,search_tokens,suggest_token,search_icons, andget_icon.@cfa/react-core/query:listComponents,getComponentProps, andgetComponentGuidancefor component catalog, prop contracts, and generated usage docs.@cfa/design-tokens-core/query:searchTokensandsuggestTokensfor token lookup and CSS-property-based suggestions.@cfa/icons/query:searchIconsandgetIconfor icon discovery and raw SVG retrieval.
Patch Changes
-
#2331
a30b50fThanks @mitchellcarroll! - FixedCardmissing the raised elevation box-shadow.Card.Rootnow displays the raised elevation shadow by default.- Applies to both outlined and non-outlined variants.
- Aligns Card appearance with the Web Card spec.
-
#2338
9b4cd55Thanks @mitchellcarroll! - Fix LoadingIndicator and PageLoader to respectprefers-reduced-motion, matching Skeleton behavior.- Stop spinner animations when the user has reduced motion enabled in their OS or browser
- Show a static dot ring for LoadingIndicator when motion is reduced
- Improves accessibility for users sensitive to motion (WCAG 2.2.2)
-
#2333
33244c7Thanks @mitchellcarroll! - FixedSliderand compactProgressBartrack backgrounds not updating when theme track colors are customized. -
#2334
cee225aThanks @mitchellcarroll! - FixedSearchInputnot showing the required indicator on its label.SearchInputnow passesisRequiredtoLabel, so the required asterisk anddata-requiredmatchTextInputandNumberInput.
-
Updated dependencies [
862a9e6,13325cf,d9d764a]:- @cfa/[email protected]
- @cfa/[email protected]
2.0.0-beta.4
Major Changes
-
#2315
1a8f6dfThanks @stevegreco! - UpdatedCartInputfor v2 styling and theme inheritance.- Removed the
colorprop. Cart inputs now inherit brand colors from the surrounding app theme. - Default
sizeis nowmd(waslg). Addsize="lg"to keep the previous implicit height. - Visual design updated to match v2 form field specs: form field border radius, default text color, and
IconButtonincrement/decrement controls (replacing custom button styling). - Read-only state styling aligns with other v2 form fields.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2281
2dc4101Thanks @stevegreco! - UpdatedInputfor v2 by removing the success state.- Removed the
isSuccessprop fromInputand success styling. Combobox.InputextendsInputProps, so it no longer acceptsisSuccesseither.- Default, invalid, and disabled states are unchanged.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2279
fb5171aThanks @stevegreco! - UpdatedNumberInputfor v2 by removing the success state.- Removed the
isSuccessprop fromNumberInput. - Default, invalid, and disabled states are unchanged.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2291
b9b10a5Thanks @mitchellcarroll! - UpdatedPageLoaderfor v2 by removing scoped brand theming.- Removed the
colorprop. Page loaders now inherit brand colors from the surrounding app theme instead of settingdata-themeon the component.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2263
ea4cb65Thanks @stevegreco! - UpdatedTagGroupfor v2 styling to align tags with the Figma spec and inherit app theme.- Replaced hard-coded tag colors with design tokens. Tags now inherit brand colors from the surrounding app theme.
- Updated tag shape, padding, and interaction states to match v2 Figma.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2278
8c73f8cThanks @stevegreco! - UpdatedTextfor v2 by removing the success state.- Removed the
isSuccessprop and success styling. Select.Description,Combobox.Description,Slider.Description,TagGroup.Description,DatePicker.Description, andDateRangePicker.Descriptionno longer acceptisSuccess.- Invalid state styling is unchanged.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2271
eeaa854Thanks @stevegreco! - UpdatedToggleButtonandToggleButtonGroupfor v2 styling aligned withButtonandIconButton.- Updated
sm,md, andlgsizes to matchButtonheights (32px, 40px, and 48px) with consistent 1px borders and label typography (label-smallforsm,label-defaultformdandlg). - Updated icon variant padding and icon sizes (16px, 24px, 24px) to align with
IconButtonat the same size steps. - Migrated styling to v2 semantic color tokens. Selected state no longer overrides text color, and pressed/selected-hover styling was removed.
ToggleButtonGroupsizenow controls sizing for every child button. IndividualToggleButtonsizeprops are ignored inside a group.
Migration:
// Before — per-button size inside a group<ToggleButtonGroup><ToggleButton size="sm" id="day">Day</ToggleButton><ToggleButton size="lg" id="week">Week</ToggleButton></ToggleButtonGroup>// After — set size on the group<ToggleButtonGroup size="md"><ToggleButton id="day">Day</ToggleButton><ToggleButton id="week">Week</ToggleButton></ToggleButtonGroup>See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Updated
Minor Changes
-
#2299
38c6955Thanks @mitchellcarroll! - Added a sharedgetInitialsutility for consistent name-to-initials formatting.- New
getInitials(name)export derives up to two uppercase initials from a display name
import { Avatar, getInitials } from "@cfa/react-core";<Avatar.Fallback>{getInitials("Truett Cathy")}</Avatar.Fallback>;getInitials("Mary Ann Smith"); // "MS" - New
-
#2318
fb06242Thanks @stevegreco! - Added aSwitchercomponent for navigating between apps or contexts.- New composable API:
Switcher.Root,Switcher.Trigger,Switcher.Value,Switcher.List, andSwitcher.Item - Supports trigger sizes (
sm,md,lg), stack and grid list layouts, and optional search filtering viauseFilter
import { Switcher } from "@cfa/react-core";<Switcher.Rootaria-label="Switch app"defaultValue="operator-portal"placeholder="Select an app"><Switcher.Trigger size="md"><Switcher.Value /></Switcher.Trigger><Switcher.List items={apps}>{(item) => <Switcher.Item id={item.id}>{item.name}</Switcher.Item>}</Switcher.List></Switcher.Root>; - New composable API:
Patch Changes
-
#2286
bf6530eThanks @stevegreco! - FixedButtonandIconButtonvariantprop documentation to list literal variant values instead of opaque type aliases.variantprop-docs now show"primary" | "secondary" | "tertiary" | "destructive"- Removed
ButtonVariantandIconButtonVariantexports; useButtonProps["variant"]orIconButtonProps["variant"]if needed - Updated generated docs for components that compose these buttons
-
#2298
61cf495Thanks @mitchellcarroll! - Removed the unsupportedinlineprop fromLinkButton’s TypeScript API and prop docs.inlinewas inherited fromLinkPropsbut never applied byLinkButton- Use
Linkwhen you need inline navigation within body copy
-
#2104
1e1abbfThanks @mitchellcarroll! - Added experimental Skeleton loading placeholders behindUNSTABLE_exports.UNSTABLE_Skeletonprovides loading context witharia-busyandinertwhileisLoadingis true.- Supported components (
Text,Heading,Link,Card,Avatar,Table,Button,ProgressBar, and others) readuseSkeleton()and apply their own skeleton styles. SkeletonPrimitiveprovides manual placeholder blocks withwidth,height, andborderRadiusfor layouts that are not built from wired components.- Export
useSkeleton,useSkeletonClassName, andgetSkeletonClassNamefor custom components that should participate in the same loading shell.
-
Updated dependencies [
9855ed5]:- @cfa/[email protected]
2.0.0-beta.3
Major Changes
-
#2264
e454d88Thanks @stevegreco! - Updated form field components for v2 to showdescriptionanderrorMessagetogether when a field is invalid.descriptionanderrorMessagenow render together whenisInvalidis true, with the error above the description.- Applies to
TextInput,TextAreaInput,NumberInput,SearchInput,TimeInput,DatePicker,DateRangePicker,Checkbox,CheckboxGroup,RadioGroup,Switch, and theCartInputrecipe. - On
TextInputandTextAreaInput, character count remains top-right when both messages are visible. - Review layouts if you previously relied on the description disappearing when invalid.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2260
b669351Thanks @stevegreco! - UpdatedIconButtonandLinkIconButtonfor v2 styling aligned withButton.- Added
variantprop (primary,secondary,tertiary,destructive) matchingButtonsemantics.destructiveis a new variant — there was nocolor="destructive"equivalent. - Removed the
colorprop. Icon buttons now inherit brand colors from the surrounding app theme instead of settingdata-themeon the component. - Changed the default
sizefrommdtoxs. Icon buttons without an explicitsizerender smaller than v1. - Updated sizes to
xs,sm,md, andlg.xlis removed. - Icon buttons render as squares at the same height as their
Buttoncounterparts where sizes align. - Default variant is
tertiary(replacescolor="gray"). - Styling can be customized via CSS custom properties (
--icon-button-content,--icon-button-surface, and related surface tokens).
If you relied on the previous implicit medium size, add
size="md":// Before (implicit md + gray)<IconButton aria-label="Close"><Close /></IconButton>// After (explicit md to keep the old height)<IconButton aria-label="Close" size="md"><Close /></IconButton>Migration:
// Before<IconButton color="gray" size="xs"><Close /></IconButton><IconButton color="primary" size="md"><Download /></IconButton><IconButton color="white" aria-label="Close"><Close /></IconButton>// After<IconButton variant="tertiary"><Close /></IconButton><IconButton variant="tertiary" size="md"><Download /></IconButton>Previous
color="primary"andcolor="secondary"were brand-colored ghost icons — usevariant="tertiary". For filled or outlined icon buttons, usevariant="primary"orvariant="secondary".For icon buttons on knockout or dark surfaces, replace
color="white"with a CSS override:.my-surface {--icon-button-content: var(--ds-semantic-color-content-knockout);}Requires an updated
@cfa/design-tokens-corerelease for--ds-semantic-size-xsand v2 button surface tokens used by icon button variants.See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2262
9d8e3f1Thanks @stevegreco! - UpdatedLoadingIndicatorfor v2 styling with color variants.- Added
variantprop:"brand"(default),"dark", and"light". - Each variant maps to component-level design tokens.
isDisabledcontinues to apply muted gray styling and overrides the active variant.- Default
variant="brand"preserves the existing appearance for current usage.
Migration:
// Before — brand styling (unchanged)<LoadingIndicator />// After — explicit variants for different backgrounds<LoadingIndicator variant="dark" /><LoadingIndicator variant="light" />See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Added
-
#2266
94dd282Thanks @mitchellcarroll! - UpdatedSearchInputfor v2 by removing the success state.- Removed the
isSuccessprop fromSearchInput. - Default, invalid, and disabled states are unchanged.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2267
6fe0ff1Thanks @mitchellcarroll! - UpdatedSelectfor v2 by removing the success state.- Removed the
isSuccessprop fromSelect.Root. - Removed success styling (
data-success) from the select field. - List overlay inherits app theme via
ListBox(no hard-coded navy theming).
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
Patch Changes
- Updated dependencies [
0c07914,b669351]:- @cfa/[email protected]
2.0.0-beta.2
Major Changes
-
#2248
6dc1e69Thanks @stevegreco! - UpdatedCalendarandRangeCalendarfor v2 styling by removing scoped brand theming.- Removed hard-coded
data-theme="cfa-navy"fromCalendarandRangeCalendar. Calendars now inherit brand colors from the surrounding app theme. DatePickerandDateRangePickerinherit the same behavior through their calendar popovers.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed hard-coded
-
#2255
a0edf0eThanks @stevegreco! - UpdatedComboboxfor v2 by removing the success state.- Removed the
isSuccessprop fromCombobox.Root. - Removed success styling (
data-success) from the combobox field. - List overlay inherits app theme via
ListBox(no hard-coded navy theming).
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2259
d3efb0eThanks @stevegreco! - UpdatedGridListfor v2 styling by removing scoped brand theming.- Removed hard-coded
data-theme="cfa-navy"fromGridList.Root. Grid lists now inherit brand colors from the surrounding app theme. - Updated item interaction states to use v2 semantic tokens for hover, selected, and disabled treatments.
- Selected items now use label font-weight in addition to the selected background.
- Disabled items now use the disabled background and text colors.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed hard-coded
-
#2252
3be855aThanks @stevegreco! - UpdatedProgressBarfor v2 by removing color options and using semantic fill colors.- Removed the
colorprop. - Default fill uses the info semantic color and switches to success green when the value reaches
maxValue. - Exposed
--progress-bar-fill-colorto override the in-progress fill color.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2256
748f54dThanks @stevegreco! - UpdatedSidebarNavfor v2 by removing scoped brand theming.- Removed the
colorprop fromSidebarNav.Root,SidebarNav.NavItem, andSidebarNav.AccordionItem. Sidebar navigation now inherits brand colors from the surrounding app theme. - Removed hard-coded
data-themescoping from sidebar navigation items.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2253
8dbb8fcThanks @stevegreco! - UpdatedSliderfor v2 by removing scoped brand theming.- Removed the
colorprop. Sliders now inherit brand colors from the surrounding app theme. - Track, thumb, and fill colors use semantic tokens under the app theme.
- Marks and ticks remain supported with no API changes.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2254
0896073Thanks @stevegreco! - UpdatedStepperfor v2 by removing scoped brand theming.- Removed the
colorprop. Steppers now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
2.0.0-beta.1
Major Changes
-
#2245
83c97b6Thanks @stevegreco! - UpdatedAvatarfor v2 styling by removing scoped brand theming.- Removed the
colorprop. Avatars now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2236
a5eb65fThanks @stevegreco! - UpdatedCheckboxfor v2 styling by removing scoped brand theming and the success state.- Checkbox now inherits brand colors from the surrounding app theme.
- Removed the
isSuccessprop and success styling. - Default, hover, focus, disabled, invalid, and read-only states are unchanged.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2247
85ff504Thanks @stevegreco! - UpdatedChipfor v2 styling with semantic color refresh, bold/subtle variants, and theme inheritance.- Removed
color="navy". - Renamed
variant="filled"tovariant="subtle"(the new default). - Added
variant="bold"for higher-contrast filled chips. variant="outlined"is unchanged and does not use bold/subtle background styling.- Chips no longer set
data-theme; they inherit the surrounding app theme. - Updated
success,warning, anderrorstyling to match the v2 Figma spec.
Migration:
// Before<Chip variant="filled" color="navy">Label</Chip>// After — remove navy; use subtle (or omit variant) for the previous filled look<Chip variant="subtle">Label</Chip><Chip variant="bold" color="success">Label</Chip>See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed
-
#2251
a12c24aThanks @stevegreco! - UpdatedDividerfor v2 styling with a bold default and a new subtle option.- The default divider now uses a bold border treatment.
- Added
variant="subtle"for the previous lighter default appearance. Menu.Dividerdefaults tovariant="subtle"so menu dividers are unchanged.
Migration:
// Before<Divider />// After — keep the previous lighter look<Divider variant="subtle" />See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. -
#2244
4c83a04Thanks @stevegreco! - UpdatedListBoxfor v2 styling by removing scoped brand theming.- Removed hard-coded
data-theme="cfa-navy"fromListBox.Root. List boxes now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed hard-coded
-
#2249
d8e3064Thanks @stevegreco! - UpdatedMenufor v2 styling by removing scoped brand theming.- Removed hard-coded
data-theme="cfa-navy"fromMenu.Popover. Menus now inherit brand colors from the surrounding app theme.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed hard-coded
-
#2237
6ef0f67Thanks @stevegreco! - UpdatedRadioGroupfor v2 styling by removing scoped brand theming and the success state.- Removed hard-coded
data-theme="cfa-navy"fromRadioGroup. Radio groups now inherit brand colors from the surrounding app theme. - Removed the
isSuccessprop fromRadioand success styling from radio options. - Default, selected, invalid, and disabled states are unchanged.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed hard-coded
-
#2240
42a9620Thanks @stevegreco! - UpdatedTablefor v2 styling by removing scoped brand theming.- Removed hard-coded
data-theme="cfa-navy"fromTable.Root. Tables now inherit brand colors from the surrounding app theme. - Row, cell, header, and selection states use theme tokens from the app context.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed hard-coded
-
#2241
abdbe35Thanks @stevegreco! - UpdatedTabsfor v2 styling by removing scoped brand theming and aligning sizing with Figma.- Removed the
colorprop. Tabs now inherit brand colors from the surrounding app theme. - Updated tab sizing to match the v2 Figma spec.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2231
4976423Thanks @mitchellcarroll! - UpdatedTextAreafor v2 by removing the success state.- Removed the
isSuccessprop fromTextArea. - Default, invalid, disabled, and compact states are unchanged.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2235
1454ff6Thanks @stevegreco! - UpdatedTextAreaInputfor v2 by removing the success state.- Removed the
isSuccessprop fromTextAreaInput. - Default, invalid, and disabled states are unchanged.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2230
7e86326Thanks @mitchellcarroll! - UpdatedTextInputfor v2 by removing the success state.- Removed the
isSuccessprop fromTextInput. - Default, invalid, and disabled states are unchanged.
See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
Minor Changes
-
#2246
262809dThanks @stevegreco! - Addedalignmentprop toBannerMessagefor left or center content alignment.- New
alignmentprop accepts"left"or"center"(default"center"). - Use
alignment="left"when the icon and message should align to the start of the banner.
- New
Patch Changes
-
#2238
0774f0cThanks @stevegreco! - Aligned component styling with updated design tokens.Chipgray filled styling now uses the renamed chip background token.GridListandMenuselected items now use the new selected-state background token.
-
Updated dependencies [
0774f0c]:- @cfa/[email protected]
2.0.0-beta.0
Major Changes
-
#2225
241cc66Thanks @stevegreco! - UpdatedBadgefor v2 styling by removing scoped brand theming.- Removed the
colorprop. Badges now inherit brand colors from the surrounding app theme instead of settingdata-themeon the component. - Badge appearance under the default app theme matches the v2 Figma spec.
Migration:
// Before<Badge badgeContent={4} color="primary"><Calendar size="md" /></Badge><Badge badgeContent={4} color="secondary" border><Calendar size="md" /></Badge>// After — remove `color`; styling comes from the app theme<Badge badgeContent={4}><Calendar size="md" /></Badge><Badge badgeContent={4} border><Calendar size="md" /></Badge>See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Removed the
-
#2222
89a0583Thanks @stevegreco! - UpdatedButtonandLinkButtonfor v2 styling and variant naming.- Renamed variants to
primary,secondary, andtertiary(replacingfilled,outlined, andtext). - Removed the
colorprop. Buttons now inherit brand colors from the surrounding theme instead of settingdata-themeon the component. - Changed the default
sizefromlgtomd. Buttons without an explicitsizerender at medium height (40px) instead of large (48px). - Updated border width and small-size label typography to match v2 specs.
- v2 styling aligns with the
experimental-reddefault theme from@cfa/design-tokens-core. If your app relies on the previouscfa-reddefault, review visual output after upgrading.
Migration:
// Before<Button variant="filled" color="secondary">Save</Button><Button variant="outlined">Cancel</Button><Button variant="text">Dismiss</Button>// After<Button variant="primary">Save</Button><Button variant="secondary">Cancel</Button><Button variant="tertiary">Dismiss</Button>Removing
colordoes not change the button variant.color="secondary"alone should becomevariant="primary"withcolorremoved — notvariant="secondary".If you relied on the previous implicit large size, add
size="lg":// Before (implicit large)<Button>Save</Button>// After (explicit large)<Button size="lg">Save</Button>See
packages/react-core/V2-MIGRATION-GUIDE.mdfor the full v2 migration guide. - Renamed variants to
Patch Changes
-
#2227
e43c79fThanks @stevegreco! - UpdatedBreadcrumbsseparator spacing for v2 styling.- Breadcrumb separators now use 8px spacing (
--ds-semantic-spacing-md) instead of 16px.
- Breadcrumb separators now use 8px spacing (
-
Updated dependencies [
d5e4b85]:- @cfa/[email protected]
1.5.0
Minor Changes
-
#2076
3e1dc97Thanks @stevegreco! - EnhancedCheckbox,Radio, andSwitchwith field-level description and validation support aligned with other form controls.Checkbox: AddederrorMessageprop to display validation text below the control whenisInvalid.Radio: Addeddescriptionprop on individual<Radio />options for per-choice helper text.Switch: AddederrorMessageprop to display validation text below the control whenisInvalid.- Description and error messages are now wired through React Aria field slots for improved accessibility (
aria-describedby/aria-errormessage).
-
#2080
d2bb17cThanks @stevegreco! - AddedCombobox.Valuefor displaying the current selection outside the search input.- Export
Combobox.ValueandComboboxValuePropsalongside other Combobox compound parts. - Supports a
placeholderwhen nothing is selected and a render function withselectedItemsfor custom displays (for example, tag chips in multiple selection). - Aligns Combobox composition with
Select.Valuefor multi-select and controlled selection UIs.
- Export
-
#2076
3e1dc97Thanks @stevegreco! - Added newTable.Footercomponent -
#2092
f0a64beThanks @stevegreco! - AddedLinkIconButtonfor icon-only navigation links that shareIconButtonstyling.- Export
LinkIconButtonandLinkIconButtonPropsfrom@cfa/react-core - Supports the same
color,size, andisDisabledprops asIconButton, plus standard anchor attributes likehrefandtarget
import { LinkIconButton } from "@cfa/react-core";import { Download } from "@cfa/system-icons";<LinkIconButton href="/reports" aria-label="Download report"><Download /></LinkIconButton>; - Export
-
#2086
5fc4ce9Thanks @stevegreco! - Expanded side navigation recipes and panel navigation primitives for application shells.- Added
UNSTABLE_UserInforecipe for signed-in user summaries in panel footers and similar compact surfaces. - Enhanced
UNSTABLE_SideNavigationwithheaderandfooterslots, typed navigation items (link,section,divider),closeOnNavigate, and automatic section expansion whencurrentKeymatches a nested item. PlaceSideNavigation.Triggerin the content area to reopen the panel after it closes. - Added
isExternaltoSidebarNav.NavItemto show an external-link icon and open links in a new tab by default. - Migration (
UNSTABLE_SideNavigation): renametitletoheader; addtypeto top-levelitems; use{ type: "divider", id }entries for separators; renderSideNavigation.Triggerinchildreninstead of relying on a built-in header trigger.
- Added
-
#2186
da962ebThanks @mitchellcarroll! - AddedToastfor brief, non-blocking status messages.- Export
ToastRegion,toastQueue, and related types from@cfa/react-core. - Queue-first API: mount
ToastRegiononce near the app root, then calltoastQueue.add()from anywhere. - Supports
info,success,warning, anderrorseverities with optional description, action, and custom icon. - Configurable viewport placement (default
"bottom right"), optional auto-dismiss viatimeout, and stacked display of up to three visible toasts. - Toast content uses
MessageBlockstyling for consistency with inline alerts.
- Export
Patch Changes
-
#2087
e711501Thanks @mitchellcarroll! - Reset default list spacing on Breadcrumbs so trails align without browser<ol>inset. -
#2073
2ff3729Thanks @mitchellcarroll! - Fixed outlined Avatar fallback text color so primary and secondary avatars render the expected themed initials.- Outlined primary Avatar fallback text now renders red on the default background.
- Outlined secondary Avatar fallback text now renders navy on the default background.
-
#2076
3e1dc97Thanks @stevegreco! - Fixed spacing issues for descriptions onCheckboxGroup,RadioGroup,Slider, andSwitch. Unintended spacing between fields and description text was removed to bring these fields into alignment. -
#2211
5671920Thanks @stevegreco! - Added sideEffects: false to react-core for better tree shaking -
#2192
28b4753Thanks @stevegreco! - Fixed ListBox selection styling and layout stability for structured list items.- ListBox items now reserve space for the selection checkmark, preventing horizontal layout shift when selecting or unselecting an item (including in Select popover lists). Reserved check space is omitted when
selectionMode="none". - Selected ListBox labels using
Text slot="label"now inherit the expected label font-weight. Text slot="description"keeps body font-weight when a list item is selected, avoiding description bolding and reflow.- Updated
Textline-height tokens for default, description, and error message slots.
- ListBox items now reserve space for the selection checkmark, preventing horizontal layout shift when selecting or unselecting an item (including in Select popover lists). Reserved check space is omitted when
-
#2023
9da13cbThanks @mitchellcarroll! - Updated component spacing to better align React Core components with the latest Figma designs.- Adjusted spacing for Card, CheckboxGroup, Chip, GridList, ListBox, MessageBlock, Tabs, TagGroup, and TextAreaInput.
-
#2075
9036fe9Thanks @mitchellcarroll! - Updated outlined Card borders to use the softer subtle border treatment. -
#2161
3433d79Thanks @mitchellcarroll! - FixedPageLoadercolorprop styling so primary and secondary themes render correctly again.color="primary"andcolor="secondary"now apply the expected CFA red and navy themes to the spinner and center icon.- Restores behavior that regressed after recent refactors left the prop documented but visually ineffective.
-
#2204
c46ffdbThanks @mitchellcarroll! - Updated React Aria dependencies toreact-aria-components1.19.0.- Aligns
@cfa/react-corewith the latest React Aria release, including upstream bug fixes and accessibility improvements. - No breaking changes or migration steps are required for existing consumers.
- Aligns
-
#2213
1841125Thanks @stevegreco! -@cfa/react-corenow depends on@cfa/iconsinstead of@cfa/system-iconsand@cfa/brand-icons.- Add
@cfa/iconsas a direct dependency if your app imports icons alongside react-core components - Update icon imports to
@cfa/icons/system,@cfa/icons/brand, or@cfa/icons/logos
import { Bell } from "@cfa/icons/system";import { SauceBottle } from "@cfa/icons/brand";import { Symbol } from "@cfa/icons/logos"; - Add
-
#2143
37636cbThanks @stevegreco! - Removed premature@deprecatedannotations from thecolorprop on themed components.Avatar,Badge,Button,LinkButton,IconButton,IconbarNav,PageLoader,ProgressBar,SidebarNav,Slider,Tabs, andCartInputno longer surface@deprecatedwarnings forcolorin the IDE, prop tables, or generated docs.- The
colorprop is still planned for removal in v2, but deprecation notices were added before a clear alternative theming path was available. - The
colorprop continues to work as before in the current release; no migration is required yet.
-
Updated dependencies [
d75460b,6e7207e,93e5fbd,bb4c6c6,bb4c6c6]:- @cfa/[email protected]
- @cfa/[email protected]
- @cfa/[email protected]
- @cfa/[email protected]
1.5.0-beta.6
Patch Changes
-
#2211
5671920Thanks @stevegreco! - Added sideEffects: false to react-core for better tree shaking -
#2213
1841125Thanks @stevegreco! -@cfa/react-corenow depends on@cfa/iconsinstead of@cfa/system-iconsand@cfa/brand-icons.- Add
@cfa/iconsas a direct dependency if your app imports icons alongside react-core components - Update icon imports to
@cfa/icons/system,@cfa/icons/brand, or@cfa/icons/logos
import { Bell } from "@cfa/icons/system";import { SauceBottle } from "@cfa/icons/brand";import { Symbol } from "@cfa/icons/logos"; - Add
1.5.0-beta.5
Patch Changes
- Updated dependencies []:
- @cfa/[email protected]
- @cfa/[email protected]
1.5.0-beta.4
Patch Changes
-
#2192
28b4753Thanks @stevegreco! - Fixed ListBox selection styling and layout stability for structured list items.- ListBox items now reserve space for the selection checkmark, preventing horizontal layout shift when selecting or unselecting an item (including in Select popover lists). Reserved check space is omitted when
selectionMode="none". - Selected ListBox labels using
Text slot="label"now inherit the expected label font-weight. Text slot="description"keeps body font-weight when a list item is selected, avoiding description bolding and reflow.- Updated
Textline-height tokens for default, description, and error message slots.
- ListBox items now reserve space for the selection checkmark, preventing horizontal layout shift when selecting or unselecting an item (including in Select popover lists). Reserved check space is omitted when
-
#2204
c46ffdbThanks @mitchellcarroll! - Updated React Aria dependencies toreact-aria-components1.19.0.- Aligns
@cfa/react-corewith the latest React Aria release, including upstream bug fixes and accessibility improvements. - No breaking changes or migration steps are required for existing consumers.
- Aligns
1.5.0-beta.3
Minor Changes
-
#2186
da962ebThanks @mitchellcarroll! - AddedToastfor brief, non-blocking status messages.- Export
ToastRegion,toastQueue, and related types from@cfa/react-core. - Queue-first API: mount
ToastRegiononce near the app root, then calltoastQueue.add()from anywhere. - Supports
info,success,warning, anderrorseverities with optional description, action, and custom icon. - Configurable viewport placement (default
"bottom right"), optional auto-dismiss viatimeout, and stacked display of up to three visible toasts. - Toast content uses
MessageBlockstyling for consistency with inline alerts.
- Export
Patch Changes
-
#2161
3433d79Thanks @mitchellcarroll! - FixedPageLoadercolorprop styling so primary and secondary themes render correctly again.color="primary"andcolor="secondary"now apply the expected CFA red and navy themes to the spinner and center icon.- Restores behavior that regressed after recent refactors left the prop documented but visually ineffective.
-
Updated dependencies [
93e5fbd,bb4c6c6,bb4c6c6]:- @cfa/[email protected]
- @cfa/[email protected]
- @cfa/[email protected]
- @cfa/[email protected]
1.5.0-beta.2
Patch Changes
-
#2143
37636cbThanks @stevegreco! - Removed premature@deprecatedannotations from thecolorprop on themed components.Avatar,Badge,Button,LinkButton,IconButton,IconbarNav,PageLoader,ProgressBar,SidebarNav,Slider,Tabs, andCartInputno longer surface@deprecatedwarnings forcolorin the IDE, prop tables, or generated docs.- The
colorprop is still planned for removal in v2, but deprecation notices were added before a clear alternative theming path was available. - The
colorprop continues to work as before in the current release; no migration is required yet.
1.5.0-beta.1
Patch Changes
-
#2087
e711501Thanks @mitchellcarroll! - Reset default list spacing on Breadcrumbs so trails align without browser<ol>inset. -
Updated dependencies [
6e7207e]:- @cfa/[email protected]
1.5.0-beta.0
Minor Changes
-
#2076
3e1dc97Thanks @stevegreco! - EnhancedCheckbox,Radio, andSwitchwith field-level description and validation support aligned with other form controls.Checkbox: AddederrorMessageprop to display validation text below the control whenisInvalid.Radio: Addeddescriptionprop on individual<Radio />options for per-choice helper text.Switch: AddederrorMessageprop to display validation text below the control whenisInvalid.- Description and error messages are now wired through React Aria field slots for improved accessibility (
aria-describedby/aria-errormessage).
-
#2080
d2bb17cThanks @stevegreco! - AddedCombobox.Valuefor displaying the current selection outside the search input.- Export
Combobox.ValueandComboboxValuePropsalongside other Combobox compound parts. - Supports a
placeholderwhen nothing is selected and a render function withselectedItemsfor custom displays (for example, tag chips in multiple selection). - Aligns Combobox composition with
Select.Valuefor multi-select and controlled selection UIs.
- Export
-
#2076
3e1dc97Thanks @stevegreco! - Added newTable.Footercomponent -
#2092
f0a64beThanks @stevegreco! - AddedLinkIconButtonfor icon-only navigation links that shareIconButtonstyling.- Export
LinkIconButtonandLinkIconButtonPropsfrom@cfa/react-core - Supports the same
color,size, andisDisabledprops asIconButton, plus standard anchor attributes likehrefandtarget
import { LinkIconButton } from "@cfa/react-core";import { Download } from "@cfa/icons/system";<LinkIconButton href="/reports" aria-label="Download report"><Download /></LinkIconButton>; - Export
-
#2032
7a52af6Thanks @mitchellcarroll! - AddedToastfor brief, non-blocking status messages.- Export
ToastRegion,toastQueue, and related types from@cfa/react-core. - Queue-first API: mount
ToastRegiononce near the app root, then calltoastQueue.add()from anywhere. - Supports
info,success,warning, anderrorseverities with optional description, action, and custom icon. - Configurable viewport placement (default
"bottom right"), optional auto-dismiss viatimeout, and stacked display of up to three visible toasts. - Toast content uses
MessageBlockstyling for consistency with inline alerts.
- Export
-
#2086
5fc4ce9Thanks @stevegreco! - Expanded side navigation recipes and panel navigation primitives for application shells.- Added
UNSTABLE_UserInforecipe for signed-in user summaries in panel footers and similar compact surfaces. - Enhanced
UNSTABLE_SideNavigationwithheaderandfooterslots, typed navigation items (link,section,divider),closeOnNavigate, and automatic section expansion whencurrentKeymatches a nested item. PlaceSideNavigation.Triggerin the content area to reopen the panel after it closes. - Added
isExternaltoSidebarNav.NavItemto show an external-link icon and open links in a new tab by default. - Migration (
UNSTABLE_SideNavigation): renametitletoheader; addtypeto top-levelitems; use{ type: "divider", id }entries for separators; renderSideNavigation.Triggerinchildreninstead of relying on a built-in header trigger.
- Added
Patch Changes
-
#2073
2ff3729Thanks @mitchellcarroll! - Fixed outlined Avatar fallback text color so primary and secondary avatars render the expected themed initials.- Outlined primary Avatar fallback text now renders red on the default background.
- Outlined secondary Avatar fallback text now renders navy on the default background.
-
#2076
3e1dc97Thanks @stevegreco! - Fixed spacing issues for descriptions onCheckboxGroup,RadioGroup,Slider, andSwitch. Unintended spacing between fields and description text was removed to bring these fields into alignment. -
#2023
9da13cbThanks @mitchellcarroll! - Updated component spacing to better align React Core components with the latest Figma designs.- Adjusted spacing for Card, CheckboxGroup, Chip, GridList, ListBox, MessageBlock, Tabs, TagGroup, and TextAreaInput.
-
#2075
9036fe9Thanks @mitchellcarroll! - Updated outlined Card borders to use the softer subtle border treatment.
1.4.1
Patch Changes
-
#2054
e900c4eThanks @stevegreco! - MarkcolorandisSuccessprops as deprecated ahead of v2.@deprecatedJSDoc oncolorfor Button, LinkButton, Avatar, Badge, IconButton, navigation components, and other themed components — remove in v2; theming will come fromvariantand the app theme.@deprecatedJSDoc onisSuccessfor form fields and related text helpers — remove in v2; success styling for fields is going away.Chiplogs a dev-time warning whencolor="navy"is used, since a single union value cannot be deprecated in TypeScript.
No breaking changes in this release; existing usage continues to work.
-
#2055
904fe2aThanks @stevegreco! - Fixed issue where the default color of the RadioGroup was the brand red instead of navy
1.4.1-beta.0
Patch Changes
-
#2054
e900c4eThanks @stevegreco! - MarkcolorandisSuccessprops as deprecated ahead of v2.@deprecatedJSDoc oncolorfor Button, LinkButton, Avatar, Badge, IconButton, navigation components, and other themed components — remove in v2; theming will come fromvariantand the app theme.@deprecatedJSDoc onisSuccessfor form fields and related text helpers — remove in v2; success styling for fields is going away.Chiplogs a dev-time warning whencolor="navy"is used, since a single union value cannot be deprecated in TypeScript.
No breaking changes in this release; existing usage continues to work.
-
#2055
904fe2aThanks @stevegreco! - Fixed issue where the default color of the RadioGroup was the brand red instead of navy
1.4.0
Minor Changes
-
#2015
44f4acaThanks @stevegreco! - Add unstable navigation building blocks and hooks for application shell layouts.- Export
UNSTABLE_Panel,UNSTABLE_SidebarNav, andUNSTABLE_SideNavigationfrom@cfa/react-core/client. - Export
useKeyboardShortcut,useIsMobile, and persistent state helpers from@cfa/react-core/hooks. - Improve panel accessibility so open mobile panels expose dialog semantics and closed panel content is hidden from interaction.
- Export
-
#2012
c9f9935Thanks @stevegreco! - Added new MessageBlock.Action component for CTA buttons inside of a MessageBlock
Patch Changes
-
#2001
8755c66Thanks @mitchellcarroll! - Added the betaUNSTABLE_ProgressIndicatorcomponent for showing progress through multi-step flows.- Includes default labeled and compact progress indicator layouts.
- Supports complete, active, and inactive step states.
Updates
Stepper.Stepso it no longer auto-generatesidattributes from step numbers; pass anidexplicitly when one is needed. -
#2007
9176aadThanks @mitchellcarroll! - Fixed theme scoping for components with primary and secondary color variants.Components now explicitly apply the default CFA Red theme when using primary/default colors, preventing nested components from accidentally inheriting a parent CFA Navy theme.
-
#2010
c93883aThanks @stevegreco! - Synced the latest Figma token export and updated React components to stay aligned with the published token set.- Updated the published token files in
@cfa/design-tokens-coreto match the latest Figma source of truth. - Removed deprecated spacing and button sizing token entries from
@cfa/design-tokens-core; consumers using those token names should migrate to the replacement semantic size and spacing tokens. - Updated
ButtonandPageLoaderin@cfa/react-coreto use the replacement tokens so their default sizing and spacing continue to render correctly after the token sync.
- Updated the published token files in
-
Updated dependencies [
e1ce933,c93883a]:- @cfa/[email protected]
1.4.0-beta.0
Minor Changes
-
#2015
44f4acaThanks @stevegreco! - Add unstable navigation building blocks and hooks for application shell layouts.- Export
UNSTABLE_Panel,UNSTABLE_SidebarNav, andUNSTABLE_SideNavigationfrom@cfa/react-core/client. - Export
useKeyboardShortcut,useIsMobile, and persistent state helpers from@cfa/react-core/hooks. - Improve panel accessibility so open mobile panels expose dialog semantics and closed panel content is hidden from interaction.
- Export
-
#2012
c9f9935Thanks @stevegreco! - Added new MessageBlock.Action component for CTA buttons inside of a MessageBlock
Patch Changes
-
#2001
8755c66Thanks @mitchellcarroll! - Added the betaUNSTABLE_ProgressIndicatorcomponent for showing progress through multi-step flows.- Includes default labeled and compact progress indicator layouts.
- Supports complete, active, and inactive step states.
Updates
Stepper.Stepso it no longer auto-generatesidattributes from step numbers; pass anidexplicitly when one is needed. -
#2007
9176aadThanks @mitchellcarroll! - Fixed theme scoping for components with primary and secondary color variants.Components now explicitly apply the default CFA Red theme when using primary/default colors, preventing nested components from accidentally inheriting a parent CFA Navy theme.
-
#2010
c93883aThanks @stevegreco! - Synced the latest Figma token export and updated React components to stay aligned with the published token set.- Updated the published token files in
@cfa/design-tokens-coreto match the latest Figma source of truth. - Removed deprecated spacing and button sizing token entries from
@cfa/design-tokens-core; consumers using those token names should migrate to the replacement semantic size and spacing tokens. - Updated
ButtonandPageLoaderin@cfa/react-coreto use the replacement tokens so their default sizing and spacing continue to render correctly after the token sync.
- Updated the published token files in
-
Updated dependencies [
e1ce933,c93883a]:- @cfa/[email protected]
1.3.0
Minor Changes
- #1966
cfb7c8aThanks @stevegreco! - UpdatedTableselection composition in Beta so adopters can control where selection UI renders in more complex table layouts before the API stabilizes.- Added
Table.SelectionColumnandTable.SelectionCellfor explicit selection composition inTableheaders and rows. - Tables that render selection controls can now place the selection column anywhere in the table structure, including after leading structural columns like drag handles.
- Selection structure is now composed explicitly at the call site instead of being injected automatically by
Table.HeaderandTable.Row.
- Added
Patch Changes
-
#1926
1746946Thanks @stevegreco! - Updated visual styling forCombobox,Select,ListBox,IconButton,Label,Input,Link, and related form components.ListBox,Select, andComboboxnow use a clearer selected-item treatment with a checkmark indicator.IconButtonhover states are more visible, including improved contrast on dark backgrounds.Labelnow uses a heavier font weight for stronger field labeling.- Disabled and read-only color treatments were refined across several related components.
-
Refreshed visual styling across form fields and selection controls, including
Checkbox,TextArea,TimeInput,FieldError,Chip,CharacterCount, andTable.- Improved hover, focus, disabled, invalid, and read-only treatments across several form components.
- Updated label, supporting text, and selection-control styling for better consistency with the current design system.
- Fixed a CSS issue that prevented
Checkboxfrom displaying its intended indeterminate styles.
-
Updated visual styling across buttons and interactive controls, including
Button,LinkButton,Tabs,Switch,TagGroup,ToggleButton,Stepper,Slider,SearchInput,RadioGroup, andProgressBar.- Refined hover, focus, active, and disabled-state styling across several interactive components.
- Updated typography, spacing, and accent-color treatments to better match the current design system.
-
Updated visual styling across overlays, feedback, and layout components, including
Accordion,BannerMessage,MessageBlock,Menu,Modal,Popover,Tooltip,GridList,Calendar,RangeCalendar,DatePicker,DateRangePicker,PageLoader,Drawer, andDivider.- Updated surfaces, shadows, spacing, and supporting content styles for better consistency across overlays and feedback components.
- Included calendar and date-picker color refinements for selected, hover, and focus states.
- Fixed
SelectandComboboxtrigger icon layering in scrolling layouts to reduce the need for localz-indexworkarounds beneath sticky content.
-
Stabilized beta date field building blocks.
UNSTABLE_DateFieldandUNSTABLE_DateRangeFieldnow use shared segmented input behavior, clearer read-only handling, and built-in clear actions.- If you compose these APIs directly,
InputGroupnow inherits disabled, invalid, and read-only state from the root component.
-
Updated
react-aria-componentsand related packages to1.17.0. -
Fixed
BannerMessagepackage exports so it is available from the@cfa/react-core/cliententrypoint instead of the@cfa/react-core/serverentrypoint.- Added
BannerMessageandBannerMessagePropsto@cfa/react-core/client. - Removed the incorrect
BannerMessageexport from@cfa/react-core/server. - If you were importing
BannerMessagefrom@cfa/react-core/server, update that import to@cfa/react-core/client.
- Added
-
Updated dependencies [
c291cc2,ac04fcd,8f9b50c,445af1c]:- @cfa/[email protected]
1.3.0-beta.2
Minor Changes
- #1966
cfb7c8aThanks @stevegreco! - UpdatedTableselection composition in Beta so adopters can control where selection UI renders in more complex table layouts before the API stabilizes.- Added
Table.SelectionColumnandTable.SelectionCellfor explicit selection composition inTableheaders and rows. - Tables that render selection controls can now place the selection column anywhere in the table structure, including after leading structural columns like drag handles.
- Selection structure is now composed explicitly at the call site instead of being injected automatically by
Table.HeaderandTable.Row.
- Added
Patch Changes
-
#1954
418c85bThanks @mitchellcarroll! - Updated consumer-facing styling forFieldError,GridList.GridListitem line-height has been adjusted. Heading now uses an updated text color.FieldErrornow uses updated text color, line-height, and font size for better consistency with the design system.
-
#1946
89c9bd4Thanks @mitchellcarroll! - Updated consumer-facing styling forMessageBlock,Menu, andModal.Menu: Updated box shadow.Modal: Updated box shadow and background color.MessageBlock: Updated line height.
-
#1966
cfb7c8aThanks @stevegreco! - Updatedreact-aria-componentsand related packages to v1.17.0 -
#1953
d3966b9Thanks @stevegreco! - FixedBannerMessagepackage exports so it is available from the@cfa/react-core/cliententrypoint instead of the@cfa/react-core/serverentrypoint.- Added
BannerMessageandBannerMessagePropsto@cfa/react-core/client. - Removed the incorrect
BannerMessageexport from@cfa/react-core/server. - If you were importing
BannerMessagefrom@cfa/react-core/server, update that import to@cfa/react-core/client.
- Added
-
#1960
12932c6Thanks @stevegreco! - Aligned several@cfa/react-corecomponents with the latest design tokens and refined typography and status-state styling.- Updated typography label and overline styles to better match the current design system scale.
- Refined component styling across chips, cards, calendars, and form controls to use newer semantic tokens more consistently.
- Removed the legacy success hover treatment on checkbox and radio success states to better align their visual behavior.
1.2.2-beta.1
Patch Changes
-
#1926
1746946Thanks @stevegreco! - Updated consumer-facing styling forCombobox,IconButton,Input,Label,Link,ListBox,SelectandCartInput.ListBox,Select, andComboboxnow use an improved selected-item treatment that includes a checkmark indicator.IconButtonnow uses a more visible hover state, including better contrast for buttons shown on dark backgrounds.Labelnow uses a heavier font weight for stronger field labeling.- Related styling updates also improve disabled and read-only colors across form inputs and supporting components.
-
#1950
c291cc2Thanks @stevegreco! - UpdatedButtonand related primary-accent styling to consume the latest synced token contracts.- Swapped
Buttonfilled, outlined, and text variants to the new primary, secondary, and tertiary button tokens, including their default, hover, and pressed state colors. - Updated
Stepper,Tabs, andCartInputto use the remapped primary accent token so branded text and active states keep the expected themed color after the token sync. - Refreshed the
Switchvisual baseline for the updated default track background token value.
- Swapped
-
#1918
632260bThanks @mitchellcarroll! - Updated visual styles for Tabs, Tag Group, and Switch components.- Refined font color, font weight, border color, and disabled state styling for Tabs
- Adjusted line height, font color, disabled background, border, and focus ring color for Tag Group
- Updated box shadow, focus ring color, and label font weight and line height for Switch
-
#1945
ef96a1cThanks @stevegreco! - FixedSelectandComboboxtrigger icon layering in scrolling layouts.- Updated
SelectandComboboxso their trailing chevron icons no longer render above nearby sticky content in common page layouts. - This reduces the need for adopters to add local
z-indexworkarounds when using these fields beneath sticky headers or other sticky surfaces.
- Updated
-
#1928
0396896Thanks @mitchellcarroll! - Stepper: updated font size (14px → 16px), font weight (500 → 700), step line color, and minor font and background color adjustments.Slider: updated mark and output label font color, font weight (500 → 700), and reduced thumb size (26px → 24px).
SearchInput: updated input value text font color.
-
#1936
9197d43Thanks @mitchellcarroll! - Updated Popover elevation shadow and adjusted label font weights for RadioGroup and ProgressBar. Minor spacing updates to RangeCalendar and PageLoader. -
#1938
ee9206eThanks @stevegreco! - Stabilized beta date field building blocks and aligned form field and overlay token styling acrossreact-core.- Updated
UNSTABLE_DateFieldandUNSTABLE_DateRangeFieldto use shared segmented input behavior, clearer read-only handling, and built-in clear actions. - Improved hover, read-only, disabled, invalid, and compact styling consistency across
Combobox,Select,Input,TextArea, andTimeInput, and updatedDrawerandDividerto use current semantic tokens. - Removed the old internal
DateInputimplementation and added coverage for the shared segmented date input behavior. - If you compose the unstable date field APIs directly,
InputGroupnow inherits state from the root instead of accepting separate disabled, invalid, or read-only props.
- Updated
-
#1923
1e69873Thanks @mitchellcarroll! - Updated visual styles for ToggleButton, Tooltip, and Typography components- ToggleButton
- Updated default border divider and text colors
- Updated the focus ring color
- Tooltip
- Updated the box shadow
- Typography
- Adjusted body text line height from 24px to 22px
- ToggleButton
-
#1922
7bc3f45Thanks @stevegreco! - Refreshed visuals and token wiring so several components match current semantic design tokens (ds-*) instead of legacycfa-*where equivalents exist.Checkbox: Body-small label typography; box colors for default, hover, selected, invalid, disabled, and read-only (read-only is visually distinct from disabled); semantic focus ring and required-indicator color.Combobox: Input surface, radius, borders, label color, and disabled trigger color use form-field / semantic tokens. Success variant still uses legacy tokens until a V2 mapping exists.Chip: Variant colors, radius, and typography use chip and semantic tokens; navy variant and some paths still use legacy tokens for compatibility.CharacterCountandTable: Description typography token for the count
No public props or APIs changed.
-
Updated dependencies [
c291cc2,8f9b50c]:- @cfa/[email protected]
1.2.2-beta.0
Patch Changes
-
#1874
86326b6Thanks @mitchellcarroll! - Resolved a CSS issue that prevented the checkbox from displaying its intended styles when in the indeterminate state. -
#1904
9c8caa0Thanks @mitchellcarroll! - Updated consumer-facing styling forTextAreaandTextAreaInput.TextAreanow uses updated line-height, border color, focus ring, and disabled/read-only background colors.
-
#1902
b9fb378Thanks @stevegreco! - Updated consumer-facing styling forAccordionandBannerMessage.Accordionnow uses updated box-shadow, border, and disabled-state colors.BannerMessagenow uses updated color tokens and more compact padding values.- Other component updates in this release are token migrations with no intended visual changes.
-
#1861
a3b4156Thanks @stevegreco! - Updated React Aria to1.16.0 -
#1903
a279cd1Thanks @stevegreco! - Updated visual styles forButton,LinkButton,Calendar, andRangeCalendar.ButtonandLinkButtondisabled styles now use a lighter disabled background color.CalendarandRangeCalendarreceived minor color refinements, including selected/hover/focus and content color updates.- These calendar visual updates also propagate to
DatePickerandDateRangePickerbecause they compose the calendar components.
-
Updated dependencies [
ac04fcd,445af1c]:- @cfa/[email protected]
1.2.0
Minor Changes
-
#1851
2558eebThanks @stevegreco! - - Added thedesign-tokens-corepackage which contains our new v2 tokens- Updated the
Buttonto use the new spacing tokens
- Updated the
-
#1846
2abfe11Thanks @Dan-Heflin! - Added Typography utility classes and atypographyutility function for consistent text styling.Utility class examples:
ds-typography--bodyds-typography--body-smallds-typography--header-1ds-typography--header-2ds-typography--header-3ds-typography--header-4ds-typography--subtitle-1ds-typography--subtitle-2ds-typography--subtitle-3ds-typography--overline-1ds-typography--overline-2ds-typography--overline-3
Utility function example:
import { typography } from "@cfa/react-core";<p className={typography({ variant: "body" })}>Body text</p><h2 className={typography({ variant: "header2" })}>Section heading</h2><span className={typography({ variant: "overline1" })}>Overline text</span>
Patch Changes
-
#1869
4648962Thanks @stevegreco! - Fixed issues with dependencies -
Updated dependencies [
2558eeb]:- @cfa/[email protected]
1.1.0
Minor Changes
-
#1828
865df96Thanks @stevegreco! - Added newleadingIconprop to theSelect.Buttoncomponent. You can now easily add aleadingIconto anySelectcomponent<Select.Root><Select.Label>Location</Select.Label><Select.Button leadingIcon={<Restaurant color="primary" />}><Select.Value /></Select.Button><Select.Popover><Select.List><Select.Item id="1">Downtown</Select.Item><Select.Item id="2">Uptown</Select.Item><Select.Item id="3">Midtown</Select.Item></Select.List></Select.Popover></Select.Root> -
#1800
1791b6cThanks @mitchellcarroll! - Added newCartInputcomponent. Supports color (primary/secondary), size (sm/md/lg), and optionalonRemovebehavior where a trash icon replaces the decrement button when the value reaches one above theminValue. Includes form field integration with label, description, and errorMessage support.const [quantity, setQuantity] = useState(1);<CartInputlabel="Quantity"value={quantity}onChange={setQuantity}onRemove={() => console.log("removed")}/>; -
#1797
10e879fThanks @stevegreco! - Added newContextualHelpcomponent as an accessible alternative to theTooltip. The component provides two variants,infoandhelp. These variants determine the icon that is used. TheTooltipis generally not a very accessible component and is not usable on mobile devices, this component provides an accessible and cross-platform alternative.<ContextualHelp aria-label="need-help"><Heading variant="headline4">Need Help?</Heading>If you're having issues accessing your account, contact our customer supportteam for help.</ContextualHelp>
Patch Changes
-
#1816
06e2e59Thanks @stevegreco! - RemoveddefaultOpenandisOpenfrom theCombobox, these props do not work with this component -
#1814
97d335dThanks @stevegreco! - Updated react-aria dependencies -
#1849
27d7c19Thanks @stevegreco! - Fixed issue with duplicate keys on theSlidercomponent -
Updated dependencies []:
- @cfa/[email protected]
- @cfa/[email protected]
1.0.4
Patch Changes
- Updated dependencies [
471c05f]:- @cfa/[email protected]
- @cfa/[email protected]
1.0.3
Patch Changes
- #1771
874773dThanks @stevegreco! - Updated React Aria package versions
1.0.2
Patch Changes
-
#1765
5434c0bThanks @stevegreco! - Added beta support for theVirtualizercomponent. You can now wrap certain collection components with theVirtualizerfor Virtualization support.Here is a basic example, documentation is coming soon.
import {UNSTABLE_Virtualizer as Virtualizer,UNSTABLE_ListLayout as ListLayout,} from "@cfa/react-core";<Combobox.Root><Combobox.Label>Sauces</Combobox.Label><Combobox.Input /><Combobox.Button /><Combobox.Popover><Virtualizer layout={ListLayout}><Combobox.List items={items}>{(item) => <Combobox.Item>{item.name}</Combobox.Item>}</Combobox.List></Virtualizer></Combobox.Popover></Combobox.Root>; -
#1764
ac15906Thanks @mitchellcarroll! - Stepper: Fixed bug wherechildrenprop was accepted but never rendered
1.0.1
Patch Changes
- #1758
d884389Thanks @stevegreco! - Added therenderEmptyStateprop to theSelectandCombobox. This can be used to render a specific component when no results are available.
1.0.0
Major Changes
-
#1751
be5937cThanks @stevegreco! - # 🚨 Breaking Changes 🚨- Removed deprecated
variantprop from theTooltip - Removed deprecated
orientationprop from theCheckboxGroupandRadioGroup - Removed deprecated
variantprop from theMessageBlockin favor of theseverityprop - Removed the
UNSTABLEprefix from theDatePickercomponent, you can now import the standard component
import { DatePicker } from "@cfa/react-core"; - Removed deprecated
0.29.1
Patch Changes
-
#1746
65e9a91Thanks @stevegreco! - Reverse the positioning of the close button in theDrawer, placing it on the outside edge -
#1733
e2bc35bThanks @mitchellcarroll!- Updated
DatePickerandDateRangePickerto provide easier overrides for the width of the component - Fixed issue with validations not resetting when clearing the value in the
DatePickerandDateRangePicker
- Updated
0.29.0
Minor Changes
- #1740
df7deadThanks @stevegreco! - AddedUNSTABLE_DropZoneto support Signal, this component should be used with caution, and is subject to change at any time.
0.28.2
Patch Changes
- #1731
91ef659Thanks @mitchellcarroll! - Fixes the internal padding for the SearchInput
0.28.1
Patch Changes
- Updated dependencies []:
- @cfa/[email protected]
- @cfa/[email protected]
0.28.0
Minor Changes
-
#1718
e2431dfThanks @mitchellcarroll! - Adds new TextField component. -
#1717
b2635cfThanks @mitchellcarroll! - Adds NumberField component to allow users to input and edit numeric values. -
#1661
79d60b2Thanks @mitchellcarroll! - Exports new Calendar, RangeCalendar, CalendarGrid, and CalendarCell components
Patch Changes
-
#1722
f1cc1f3Thanks @mitchellcarroll! - DatePicker & DateRangePicker: removes inconsistent focus styling for the calendar icon. -
Updated dependencies [
cd68a51]:- @cfa/[email protected]
- @cfa/[email protected]
0.27.0
Minor Changes
-
#1715
b08a1c2Thanks @stevegreco! - Added newpanelPaddingprop to theAccordion.Rootandpaddingto theAccordion.Panel. . These props will help control the padding inside of the Accordion panels -
#1706
d66adc0Thanks @stevegreco! - Addedalignmentprop to theTextInputto allow for right alignment of the text, similar to theNumberInput
0.26.0
Minor Changes
- #1684
8cde6e3Thanks @stevegreco! - Added support for sections/groups in theListBox,GridList,SelectandComboboxcomponents
0.25.2
Patch Changes
- #1698
9047135Thanks @stevegreco! - Added relative positioning to theRadioto a fix positioning bug with the hidden input
0.25.1
Patch Changes
-
#1663
56eaf81Thanks @stevegreco! - Fixed issue withAccordionoutline-offset -
#1668
561ca40Thanks @stevegreco! - Fixed issue with the gap in theBannerMessagethat caused extra space between components that are passed aschildren
0.25.0
Minor Changes
-
#1645
4360225Thanks @mitchellcarroll! - Modal: Fixed an issue where inputs inside a modal were being pushed off screen when the virual keyboard was rendered on tablets and phones. -
#1603
9f0ba71Thanks @mitchellcarroll! - Add support for aligning tabs. A new alignment prop on the Tabs component allows consumers to control how tab labels are aligned. Supported values are left (default), center, and right. Existing behavior stays the same unless the prop is provided, giving more flexibility for different layout needs. -
#1640
9a99303Thanks @mitchellcarroll! - Adds character counter to the TextInput component. Can be used by adding hasCharacterCount prop + maxLength prop.
Patch Changes
-
#1543
3bc359dThanks @mitchellcarroll! - Adds Table component as a wrapper around React Aria table primitives. -
#1625
be92114Thanks @stevegreco! -Surface: updatedbackground-colorto bebase-1 -
#1647
e9473ddThanks @stevegreco! - Adjusteddisabledstyles for theSwitchlabel to ensure it meets proper contrast ratio -
#1607
1553615Thanks @stevegreco! - Field Changes- Added global variables for our form fields to more easily control them all once
- Adjusted
BaseButtonCSS to prevent conflicts withButtonvariants - Changed the padding below the
CheckboxGroupandRadioGrouplabel from12pxto4px - Moved the
compactprop onto theBaseDateInput(internal) to control the padding as opposed to on theDateInputandTimeInputcomponents - Adjusted widths of form fields to be more consistent
0.24.1
Patch Changes
- #1589
2b3c2dfThanks @stevegreco! - Fixed small issue with theSelectfocus outline offset
0.24.0
Minor Changes
- #1582
47cbdf5Thanks @stevegreco! - AddedoffsetandcrossOffsetprops to theMenu.Popoverto allow for more custom positioning
Patch Changes
-
#1559
84cafffThanks @stevegreco! - Removed incorrect focus state styling onCalendarCelland theIconbuttonused in theDatePicker -
#1567
582be41Thanks @stevegreco! - Fixed multiple styling issues with the DateInput- Incorrect focus styling
- Incorrect placeholder styling when the field is disabled
-
#1552
b2c8ef0Thanks @stevegreco! - Enhanced focus states- Updated colors of the focus ring to ensure that it meets color contrast guidelines for accessibility
- Reduced the focus ring size from
4pxto2pxand adjusted offset to properly align with border for each component - Added a positive offset to the
Buttoncomponents to provide a visual gap between the focus ring and theButton
-
Updated dependencies [
b2c8ef0]:- @cfa/[email protected]
0.23.0
Minor Changes
-
#1535
0e1ecfaThanks @stevegreco! - Removedmultilinesupport on theTextInputcomponent and separated it into a newTextAreaInputcomponent.As a result of this change, the
multilineandhasCharacterCountprops have been removed from the standardTextInput.
Patch Changes
-
#1542
f6e0979Thanks @stevegreco! - Fixed issue with theButtonwidth not respecting the parent containers width -
#1540
517eea9Thanks @stevegreco! - -Avatar.Rootwas unintentionally overriding anyrefthat was forwarded in, causing unintended side effects with components likeFocusableandPressable- Added
forwardRefto theAvatar.Rootto provide better compatability with React 18 and ourFocusableandPressablecomponents
- Added
0.22.1
Patch Changes
- #1536
c810051Thanks @stevegreco! - Fixed issue with internal context of theSelectcomponent
0.22.0
Minor Changes
-
#1530
8313b04Thanks @stevegreco! - Various quality of life updates forSelectandComboboxSelect
- Added
compactandshouldFlipprops to theSelect.Rootto provide better DX - Enhanced the
max-heightfunctionality to utilize themaxHeightprop on theSelect.Popoverto provide more stable sizing - Added some basic layout styling to the
Select.ItemandSelect.Valueto allow for easier composition of additional elements - Updated docs to reflect some deprecated props. These changes were made to better align with the native
selectcomponent and support multi selectiondefaultSelectedKey—>defaultValueselectedKey—>valueonSelectionChange—>onChange
Combobox
- Enhanced the
max-heightfunctionality to utilize themaxHeightprop on theCombobox.Popoverto provide more stable sizing - Added
compact,shouldFlip,disableIconAnimation,iconVariantandisRequiredto theCombobox.Rootto provide a better DX and prevent having to add these to nested components - Added some basic layout styling to the
Combobox.Itemto allow for easier composition of additional elements
- Added
-
#1532
817e692Thanks @stevegreco! - Addedrefto various component types and forwarded it onto the correct element where appropriate.BaseButtonButtonCheckboxCheckboxGroupComboboxIconButtonInputNumberInputRadioGroupSearchInputSelectSliderTextAreaTextInput
0.21.1
Patch Changes
- #1522
2fd3236Thanks @stevegreco! - - Added deprecation for theorientationprop on theCheckboxGroup- Added deprecation for the
orientationprop on theRadioGroup
- Added deprecation for the
0.21.0
Minor Changes
- #1515
3d6ffd0Thanks @mitchellcarroll! - Add isDateHighlighted prop to DatePicker and DateRangePicker to enable highlighting specific dates in Calendar and RangeCalendar.
Patch Changes
- #1519
dee1d74Thanks @stevegreco! - Fixed various issues with theSelectcomponent- Added
text-align: leftto theSelect.Buttonto properly align text when wrapping to multiple lines - Fixed issue where the focus styling was being displayed on the component after selecting an item.
- Added
0.20.1
Patch Changes
- #1512
2c6012bThanks @stevegreco! - Added relative positioning to the Checkbox to fix positioning bug with the hidden input
0.20.0
Minor Changes
-
#1479
60a7623Thanks @mitchellcarroll! - Exports new DateRangePicker and DateRangeField components. Marking as “Unstable” to gather feedback from adopters -
#1485
0cdab78Thanks @mitchellcarroll! - Exports a new TimeInput component -
#1491
a492de8Thanks @mitchellcarroll! - Adds support for highlighting dates in the Calendar component via an isDateHighlighted option, allowing adopters to mark specific days with a custom style. -
#1438
60e2dfbThanks @mitchellcarroll! - Update DatePicker to follow the current component composition pattern and introduces DateField components for composability/customizations. -
#1498
295303eThanks @mitchellcarroll! - •Added a Clear button to both DatePicker and DateRangePicker.•Introduced a new InputGroup component within the DateField collection to wrap the input, clear button, and calendar trigger, providing greater control over subcomponent composition.•Applied minor style adjustments to DatePicker, setting the default max width to 400px based on feedback from @Dan-Heflin. -
#1496
b761d4eThanks @stevegreco! - Updatedreact-ariadependencies to most recent versions- Added multiple
Autocompletestories to show usage with different components - Added a composed example of a
Selectthat supports multiple selections - Replaced
@react-aria/utilswithreact-ariafor theuseIdhook - Updated the
Tabscomponent to utilize the newSelectionIndicatorcomponent and added the appropriate animation. - Updated the
Tabswith some other design enhancements, specifically the height was changed from42pxto40px, and we updated the hover styling to change the font-color instead of adding an underline. - Updated the
Accordionanimations to use the new CSS custom properties that RAC makes available for animating. It should now properly animate with thepaddingworkaround that we previously used.
- Added multiple
-
#1444
20f1827Thanks @stevegreco! - Added new TagGroup component
Patch Changes
-
#1484
79ce531Thanks @stevegreco! - Fixed CSS bugs withListBox,GridList,SelectandCombobox- Resolved
border-radiusissue with theListBoxandGridList - Resolved
overflowissue with theSelectandCombobox
- Resolved
-
#1442
16ba3b2Thanks @mitchellcarroll! - Refactors Date and Time components to remove unnecessary prop passing between components. -
#1471
d44cb38Thanks @stevegreco! - Removed clsx dependency -
#1495
5af1835Thanks @stevegreco! - Added custom clear button to theSearchInputto provide better browser/framework compatibility -
#1473
f143cedThanks @stevegreco! - Fixed issue withBreadcrumbscurrent link font color -
#1483
038292fThanks @mitchellcarroll! - Consolidates css in the Date and Time components -
Updated dependencies [
8a61111]:- @cfa/[email protected]
- @cfa/[email protected]
0.19.3
Patch Changes
- #1466
e8871c1Thanks @stevegreco! - Moved exports for@internationalized/dateinto ourserverexports so that they can be accessed in server side code.
0.19.2
Patch Changes
- #1460
1de1102Thanks @stevegreco! - Fixed issue with Tabtext-decorationwhen using thehrefattribute
0.19.1
Patch Changes
-
#1455
a6db128Thanks @stevegreco! - Fixed various CSS bugs- Removed
background-colorfrom theTabscomponent - Updated
Tabsto usecursor: pointer - Removed
background-colorfrom the defaultAccordionvariant - Fixed background colors for the states of
Checkboxwhen usingisIndeterminate
- Removed
-
#1448
0de40c0Thanks @stevegreco! - Updated css font properties to use current design tokens -
#1420
7af5fc6Thanks @mitchellcarroll! - Flattened DatePicker CSS structure to make custom class overrides easier and fixed an input min-width issue caused by nested styles. -
#1449
b62e1f0Thanks @stevegreco! - Exporting thePressEventtype -
#1427
03df90fThanks @stevegreco! - Fixedmax-heightissue with theSelectandComboboxdropdowns
0.19.0
Minor Changes
-
#1411
90c0c86Thanks @stevegreco! - 🚨 Breaking ChangeThe
Tooltipdesign has been updated to provide a better user experience on light backgrounds. The default background color of theTooltipis now dark, with light text. You can view these changes on the docs site.The old variant will still be available for a limited time using the
variant="light"prop. This prop will eventually be removed in a later release.To retain an old design, you must add the
variant="light"prop.// New Dark Variant - Default<Tooltip.Content>Tooltip Content</Tooltip.Content>// Old Legacy Variant<Tooltip.Content variant="light">Tooltip Content</Tooltip.Content>
0.18.0
Minor Changes
-
#1382
2e8b99cThanks @CaseyGarland! - - LoadingIndicator: now uses accessibility roleprogressbar(wasstatus).- PageLoader: now uses accessibility role
progressbar(wasstatus).- Removed
ariaLabel(uses standardaria-label).
- Removed
- PageLoader: now uses accessibility role
-
#1409
47e0e02Thanks @stevegreco! - Updated theStepper.Stepto forward its ref, allowing the use of thePressablecomponent -
#1390
a8e0d95Thanks @stevegreco! - 🚨 Breaking Change- Removed
Breadcrumbs.Separatorand now just render it automatically - Changed Separator from a custom icon to the standard font chevron
- Updated the relevant docs
- Removed
-
#1387
c159bfaThanks @stevegreco! - -Slidercomponent has been refactored to use a compound component API, allowing for more flexible and composable usage. The new structure separates the Slider into separate components such asSlider.Root,Slider.Label,Slider.Output,Slider.Track,Slider.Thumb, andSlider.Description.- Old usage:
<Slider label="Slider label" description="Helper text" />- New compound usage:
<Slider.Root><Slider.Label>Slider label</Slider.Label><Slider.Output /><Slider.Track><Slider.Thumb /></Slider.Track><Slider.Description>Helper text</Slider.Description></Slider.Root>-
Slider“range” functionality has also been added, allowing users to select a range of values by passing an array to thedefaultValueorvalueprop and using twoSlider.Thumbcomponents.- Example of a range slider:
<Slider.RootdefaultValue={[10, 30]}minValue={0}maxValue={50}step={5}marks><Slider.Label>Range Slider</Slider.Label><Slider.Output /><Slider.Track><Slider.Thumb index={0} /><Slider.Thumb index={1} /></Slider.Track><Slider.Description>Select a value range</Slider.Description></Slider.Root>
-
#1386
3709bfeThanks @stevegreco! - AddedisDisabledprop to theLabelcomponent
Patch Changes
-
#1395
a989abcThanks @stevegreco! - Optimized CSS variables in theTooltipto ensure the arrow matches the tooltip background color -
#1333
493ac74Thanks @vincevahala! -Select: flatten CSS for better adopter customizability. -
#1403
053bbdcThanks @stevegreco! - Added defaultaria-labelto theLoadingIndicatorcomponent, this can be overwritten by a user passed prop
0.17.0
Minor Changes
-
#1371
4e60ca5Thanks @stevegreco! - Updated React Aria libraries to the most recent versions -
#1330
e3ee562Thanks @vincevahala! - Removed isDisabled prop from theLabelcomponent and subsequent components using the Label:CheckboxGroup,Combobox,Label,NumberInput,RadioGroup,SearchInput,Select,TextInput,DatePicker,DateInput,DateRangePicker,TimeInput.
Patch Changes
- #1319
87db1feThanks @vincevahala! -DatePicker:- Updated
BaseButtonto useIconButton. - Added correct
isDisabledstate and styling toIconButton. - Disables the
IconButtonin theisReadOnlystate.
- Updated
0.16.2
Patch Changes
-
#1298
ef86926Thanks @stevegreco! - Updated internal dependencies -
Updated dependencies [
0b0f9c9,ef86926]:- @cfa/[email protected]
- @cfa/[email protected]
0.16.1
Patch Changes
-
#1294
b50dc05Thanks @stevegreco! - Movedreactandreact-domtodevDependenciesto ensure they resolve correctly as peers -
#1290
5cc4e61Thanks @stevegreco! -Select: Fixed an issue that caused the scrollbar to extend past the bottom of the popover
0.16.0
Minor Changes
-
#1206
0c757fbThanks @vincevahala! - - CreateSteppercomponent and document examples.- Create
useStepStategeneric hook and documents examples.
- Create
-
#1283
6be1789Thanks @stevegreco! -TextInput: No longer renders the character count by default when using themaxLengthprop, a newhasCharacterCountprop renders the counter -
#1286
5be44caThanks @stevegreco! - Added newDescriptionandErrorcomponents for theSelectandCombobox -
#1280
ab6b683Thanks @stevegreco! - Removed UNSTABLE_onScrollEnd and UNSTABLE_onScrollEndOffset from the Listbox and Combobox components
Patch Changes
-
#1275
4f3a17bThanks @vincevahala! - FlattenListBoxCSS, specifically for the.listBoxItem, enabling better adopter styling control. -
#1270
8fb071eThanks @vincevahala! - Add JSDoc descriptions toStandardDOMProps. -
#1284
e571a1fThanks @stevegreco! -MessageBlock: Flattened the CSS for theMessageBlock.Titlecomponent for easier overrides. -
#1273
03a8644Thanks @vincevahala! - Thedata-successattribute is added when theisSuccessboolean prop is true on the following components for state management and styling purposes:CheckboxComboboxNumberInputRadioGroupSearchInputSelectTextTextAreaTextInput
0.15.0
Minor Changes
-
#1258
d9e7b2cThanks @vincevahala! - -Input: refactored to usedata-successanddata-alignmentattributes.Accordion: changedelevatedItemsprop toisElevated.
-
#1218
ec4f149Thanks @stevegreco! - - EnhancedAccordion.Itemto be used independently from theAccordion.Root. This is useful if you need to use a singularAccordion.Item. Overall this better encapsulates the component and allows more in depth customizations to the CSS.Accordion.Itemnow has anelevatedprop that can be used to render the elevated variant.
Patch Changes
-
#1231
75c866cThanks @vincevahala! - FlattenCardCSS for better adopter use. -
#1252
5d271e3Thanks @stevegreco! - Fixed issue with theModalanimation causing theComboboxandSelectwidths to be calculated incorrectly. The “zoom” animation was causing the--trigger-widthvariable to calcluate before the animation was finished, causing it to be too small.This issue was resolved by removing the “zoom” animation and replacing it with the “fade” that was already being used for the Overlay.
-
#1265
71a9877Thanks @stevegreco! - AdjustedModalCSS for better adopter use and customization -
#1245
a1ab066Thanks @vincevahala! - FlattenComboboxCSS for better adopter customizing. -
#1251
b0934b1Thanks @stevegreco! - Added afilledclass to theChipfor the default variant -
#1243
814ba72Thanks @stevegreco! - Updated the@react-aria/test-utilsdependency to be a dev dependency -
#1233
53b167dThanks @stevegreco! - Simplified CSS forBannerMessageby flattening its DOM structure -
#1225
50d1f23Thanks @stevegreco! - Updated custom CSS properties for theBadgecomponent to be more flexible -
#1250
87bd7dbThanks @stevegreco! - Updated React Aria dependencies to latest versions -
#1227
c90fd95Thanks @vincevahala! - FlattenBreadcrumbsCSS for better adopter customization.
0.14.2
Patch Changes
- #1217
123fffcThanks @stevegreco! - Fixed issue withBaseButtonborder styling that prevented adding border styles with TailwindCSS
0.14.1
Patch Changes
- #1199
8216dc4Thanks @stevegreco! - - Adjustedoutline-offseton theAccordion.Itemto ensure proper focus styling- Added open animation when the
Accordion.Itemopens
- Added open animation when the
0.14.0
Minor Changes
- #1183
a05062cThanks @stevegreco! - UpdatedSelectto ensure it does not render aDialogin thePopover
Patch Changes
-
#1177
461dc39Thanks @stevegreco! - Fixed issues related to labels forCheckboxandRadio- Updated
Checkboxfont-weightto500 - Updated
Radiofont-weight,font-sizeand alignment properties to ensure center alignment
- Updated
-
#1172
a267c6bThanks @stevegreco! - Fixed height ofSwitchcomponent and changed from22pxto24px
0.13.0
Minor Changes
- #1163
2743101Thanks @vincevahala! - RemoveReact.HTMLAttributes<HTMLDivElement>fromSurfaceand useStandardDOMPropsinternal props in its place’.
Patch Changes
- #1169
6ce8734Thanks @stevegreco! - Added missingbackground-colorfor theInputcomponent to fix issue with Tailwind base style conflicts
0.12.0
Minor Changes
-
#1073
70efb42Thanks @stevegreco! - RemovedshouldCloseOnInteractOutsidefrom components using theDialog, this prop is different fromisDismissablewhich allows the user to close theModalcomponents by clicking outside. -
#1144
4c93759Thanks @stevegreco! - Removed internal CSS layers to prevent conflicts withtailwindcss@3 -
#1094
4a700dcThanks @stevegreco! - Exporting the @internationalized/date package from @cfa/react-core for version unity -
#1127
8878f65Thanks @vincevahala! - 🚨 BREAKING CHANGE: UpdatedTooltipAPIWe have updated the
TooltipAPI to be more consistent with other components and provide better control over placement and styling.Previous API:
<Tooltip.Trigger><Button>Hover me</Button><Tooltip>Tooltip Content</Tooltip></Tooltip.Trigger>New API:
<Tooltip.Root><Button>Hover me</Button><Tooltip.Content>Tooltip Content</Tooltip.Content></Tooltip.Root> -
#1115
836d5a6Thanks @vincevahala! - Remove CustomCSSProperties from Divider. -
#1126
71272a5Thanks @stevegreco! - Added two new features:useFilter- A new hook that simplifies text filtering in components, supporting case sensitivity options and locale-aware string matchingAutocomplete- A new component that combines input fields with filtered suggestions, enabling searchable dropdown menus and command palettes
-
#1131
4502b60Thanks @vincevahala! - Chip:- Removed
React.DetailedHTMLPropsofHTMLDivElement - Added the internal
StandardDOMProps
- Removed
-
#1065
0ee191eThanks @vincevahala! - Refactored Avatar into compound API pattern and added documentation. -
#1078
c64382cThanks @stevegreco! - 🚨 BREAKING CHANGE- Updated the
GridListandListBoxwith a new composition API
Before
<ListBox><ListBox.Item>Item 1</ListBox.Item><ListBox.Item>Item 2</ListBox.Item></ListBox><GridList><GridList.Item>Item 1</GridList.Item><GridList.Item>Item 2</GridList.Item></GridList>After
<ListBox.Root><ListBox.Item>Item 1</ListBox.Item><ListBox.Item>Item 2</ListBox.Item></ListBox.Root><GridList.Root><GridList.Item>Item 1</GridList.Item><GridList.Item>Item 2</GridList.Item></GridList.Root> - Updated the
-
#1044
9f8a2aaThanks @stevegreco! - AddedLinkButtoncomponent -
#1072
f80ff36Thanks @stevegreco! - 🚨 BREAKING CHANGE: UpdatedPopoverAPIWe have updated the
PopoverAPI to be more consistent with other components and provide better control over placement and styling.In the previous iteration of the
Popover, the component structure was less clear. Here is the previous API for thePopover.<Popover.Trigger><Button>Open Popover</Button><Popover>Popover Content</Popover></Popover.Trigger>The new API provides a more consistent component structure and improved naming.
<Popover.Root><Button>Open Popover</Button><Popover.Panel>Popover Content</Popover.Panel></Popover.Root>For more advanced use cases, we’ve exposed the composition pattern with separate components.
<Popover.Root><Button>Open Popover</Button><Popover.Wrapper><Popover.Dialog>Advanced Composition</Popover.Dialog></Popover.Wrapper></Popover.Root>However, we recommend using the simplified
Popover.Panelcomponent for most use cases. -
#1114
b392dc5Thanks @vincevahala! -BadgeComponent:- Removed
CustomCSSProperties. - Removed
DetailedHTMLAttributesofHTMLSpanElementprops. - Added internal
StandardDOMProps.
- Removed
-
#1118
32a9012Thanks @vincevahala! -LoadingIndicator:- Remove
React.HTMLAttributes<HTMLDivElement>. - Add
StandardDOMPropsandLabelingProps.
- Remove
Patch Changes
-
#1113
507a8e7Thanks @stevegreco! - - AlignedInputplaceholderandread-onlystyles with the proper design tokens -
#1096
0bbb907Thanks @stevegreco! - Added docs for theBreadcrumbscomponent -
#1161
927512aThanks @stevegreco! - Added missing custom className toModal.Overlay -
#1134
9535a37Thanks @stevegreco! - Updatedreact-ariapackage versions for latest release[email protected]@internationalized/[email protected]@react-aria/[email protected]@react-aria/utils@^3.29.0@react-stately/[email protected]
You can find the most recent release notes here
-
#1092
e33a0c7Thanks @stevegreco! - Fixed issue withsmsize prop for theToggleButton -
#1068
e43bddbThanks @vincevahala! - Add color prop to PageLoader. -
#1132
fcdc870Thanks @vincevahala! - [Bug]: Conditionally render the correct icon (check, dash, or no icon) in theCheckboxcomponent, fixing a bug where it appeared to be checked whenisDisabledandisReadOnly. -
#1137
55c1a19Thanks @vincevahala! - AddCheckboxandCheckboxGroupREADME and document examples -
#1113
507a8e7Thanks @stevegreco! - Addedrequiredstyles to theSearchInput -
#1073
70efb42Thanks @stevegreco! - Exported proper props for theModalcomponents
0.11.0
Minor Changes
-
#961
13ff7d4Thanks @stevegreco! - - RemovedonClickprop from interactive components to ensure consistent handling of click events usingonPressas suggested by the React Aria team:Select.ButtonLinkToggleButtonToggleButtonGroup
New React Aria Prop Updates
- Added
createCalendarprop to Calendar components, enabling custom calendar implementations via(identifier: CalendarIdentifier) => Calendarfunction - Added
escapeKeyBehaviorprop to ListBox components to control clearing selection on Escape key press (“clearSelection” | “none”) - Deprecated
UNSTABLE_portalContainerprop across all overlay components (Modal, Popover, Tooltip) in favor of usingUNSAFE_PortalProvider
-
#910
126c4d1Thanks @stevegreco! - AddedBreadcrumbsComponent -
#977
8999b46Thanks @stevegreco! - 🚨 BREAKING CHANGE: Updated composition API forCardcomponentThis change adopts a compound component pattern for the Card component, making the API more explicit and consistent with other components in the design system.
Before:
<Card outlined><Card.Content><Card.Title>Chick-fil-A Cool Wrap</Card.Title></Card.Content></Card>After:
<Card.Root outlined><Card.Content><Card.Title>Chick-fil-A Cool Wrap</Card.Title></Card.Content></Card.Root>Changes include:
- Renamed the main
Cardcomponent toCard.Root - Moved types into
types.ts - Updated all internal implementations and tests to use the new API
- Documentation reflects the new compound component pattern
- Renamed the main
-
#910
126c4d1Thanks @stevegreco! - AddedLinkcomponent -
#1051
7729c60Thanks @vincevahala! - - Component API changes: Updated component toMessageBlock.Rootto follow compound component pattern.- Prop changes: Remove
React.HTMLAttributes<HTMLDivElement>fromMessageBlockProps, and use the internalStandardDOMPropsandLabelingProps.
- Prop changes: Remove
-
#843
f089a1eThanks @stevegreco! - Updated to[email protected]and[email protected] -
#920
0c9bad4Thanks @stevegreco! - 🚨 BREAKING CHANGE:varianthas been marked as deprecated and changed toseverityon theMessageBlock -
#1043
0775adbThanks @stevegreco! - 🚨 BREAKING CHANGE: UpdatedDrawerAPIWe have updated the
DrawerAPI to be more user friendly and provide a better default experience.In the previous iteration of the
Drawer, some of the components were obscured behind the scenes, here is the previous API for theDrawer.<Drawer.Trigger><Button>Open Drawer</Button><Drawer>Drawer Content</Drawer></Drawer.Trigger>The new API involves more components, but also provides more control over the component itself, along with the styling.
<Drawer.Root><Button>Open Drawer</Button><Drawer.Tray>Drawer Content</Drawer.Tray></Drawer.Root>✅ New Feature
There is a
Drawer.Overlaythat is available as an optional component. This would only ever be needed if you needed to make some sort of customization to theOverlayitself. We do not recommend using this unless there is a specific reason to do so.<Drawer.Root><Button>Open Drawer</Button><Drawer.Tray>Drawer Content</Drawer.Tray></Drawer.Root>The main change here is
- The
Drawerpreviously combined together theOverlayand theDialog, now those are independent of each other for greater control
- The
-
#988
d4ed523Thanks @stevegreco! - Add CSS Layers- Added
reset,baseandcorelayers
- Added
-
#1045
45d41c7Thanks @vincevahala! - Remove React.HTMLAttributesfrom BannerMessage Props. -
#960
4a6191eThanks @stevegreco! - 🚨 BREAKING CHANGE: Updated composition API forAccordioncomponentThis change adopts a compound component pattern for the Accordion component, making the API more explicit and consistent with other components in the design system.
Before:
<Accordion><Accordion.Item><Accordion.Trigger>Item 1</Accordion.Trigger><Accordion.Panel>Content 1</Accordion.Panel></Accordion.Item></Accordion>After:
<Accordion.Root><Accordion.Item><Accordion.Trigger>Item 1</Accordion.Trigger><Accordion.Panel>Content 1</Accordion.Panel></Accordion.Item></Accordion.Root>Changes include:
- Renamed the main
Accordioncomponent toAccordion.Root - Export types for all subcomponents:
AccordionTriggerProps,AccordionPanelProps,AccordionItemProps - Updated all internal implementations and tests to use the new API
- Documentation reflects the new compound component pattern
- Renamed the main
-
#987
5af2dacThanks @stevegreco! - 🚨 BREAKING CHANGE: UpdatedComboBoxandSelectto use compound component patternBefore:
import { ComboBox } from "@cfa/react-core";<Select items={sauces} label="Select a sauce">{(sauce) => <Select.Item id={sauce.id}>{sauce.name}</Select.Item>}</Select>;<ComboBox items={sauces} label="Select a sauce">{(sauce) => <ComboBox.Item id={sauce.id}>{sauce.name}</ComboBox.Item>}</ComboBox>;After:
import { ComboBox } from "@cfa/react-core";<Combobox.Root><Combobox.Label>Sauces</Combobox.Label><Combobox.Input /><Combobox.Button /><Combobox.Popover><Combobox.List items={sauces}>{(sauce) => <ComboBox.Item id={sauce.id}>{sauce.name}</ComboBox.Item>}</Combobox.List></Combobox.Popover></Combobox.Root>;import { Select } from "@cfa/react-core";<Select.Root><Select.Label>Select</Select.Label><Select.Button><Select.Value /></Select.Button><Select.Popover><Select.List items={sauces}>{(sauce) => <Select.Item id={sauce.id}>{sauce.name}</Select.Item>}</Select.List></Select.Popover></Select.Root>;✅ New Features
New component has been added
ClearButtonis now available for both theComboboxandSelect. This new button can be used anywhere within theSelect.Rootand will clear the stateonPress. This was previously available, but you would have to use the component in a controlled state, and write this logic yourself. This provides a “batteries included” solution.import { Select } from "@cfa/react-core";<Select.Root><Select.Label>Select</Select.Label><Select.Button><Select.Value /></Select.Button><Select.ClearButton>Reset</Select.ClearButton><Select.Popover><Select.List><Select.Item id="1">Item 1</Select.Item></Select.List></Select.Popover></Select.Root>;Key Changes:
- Renamed
ComboBoxtoComboBox.Root - Rename
SelecttoSelect.Root - Added a
ClearButtonto both theComboboxandSelectfor enhancement composability. This new component hooks into the context of theCombobox/Selectto allow someone to clear the state. - Updated Stories and Tests to use the new structure
- Renamed
-
#993
e3884f0Thanks @vincevahala! - 🚨 BREAKING CHANGE: RefactoredTabscomponent to adopt a compound component pattern:TabsbecomesTabs.RootTab.ListbecomesTabs.ListTabbecomesTabs.ItemTab.PanelbecomesTabs.Panel
Add README to
Tabs:- Add prop table
- Add examples
- [INTERNAL] Remove autodocs from SB
-
#915
ee2e9a3Thanks @stevegreco! - 🚨 BREAKING CHANGE: UpdatedModalAPIWe have updated the
ModalAPI to be more user friendly and provide a better default experience.In the previous iteration of the
Modal, some of the components were obscured behind the scenes, here is the previous API for theModal.<Modal.Trigger><Button>Open Modal</Button><Modal>Modal Content</Modal></Modal.Trigger>The new API involves more components, but also provides more control over the component itself, along with the styling.
<Modal.Root><Button>Open Modal</Button><Modal.Dialog><Modal.Content>Modal Content</Modal.Content></Modal.Dialog></Modal.Root>✅ New Feature
There is a
Modal.Overlaythat is available as an optional component. This would only ever be needed if you needed to make some sort of customization to theOverlayitself. We do not recommend using this unless there is a specific reason to do so.<Modal.Root><Button>Open Modal</Button><Modal.Overlay><Modal.Dialog><Modal.Content>Modal Content</Modal.Content></Modal.Dialog></Modal.Overlay></Modal.Root>The two main changes here are
- The
Modalpreviously combined together theOverlayand theDialog, now those are independent of each other for greater control - We now provide the
Modal.Contentcomponent that provides the default layout experience for theModalas defined in the Design System. It provides basicpaddingand contentwidthproperties.
- The
Patch Changes
-
#1021
44cf6feThanks @vincevahala! - - Create PageLoader README.- Adjust
PageLoaderPropsto be more explicit in prop usage.- Add
StandardDOMPropsandLabelingPropsfrom internal types. - Remove prop extension of
React.HTMLAttributes<HTMLDivElement>.
- Add
- Adjust
-
#946
3c79268Thanks @stevegreco! - Fixedgapissue on the defaultAccordionvariant to ensure correct spacing -
#1054
c847b4aThanks @stevegreco! - Adjusted margin onRadioGroupandCheckboxgroup -
#935
8669dc8Thanks @stevegreco! - Updated React Aria to v1.8- Omitted the new
onClickhandler from theButton, the suggested approach is to utilizeonPress
- Omitted the new
-
#1032
3d542d6Thanks @vincevahala! - Add RadioGroup README. -
#1050
425bdfdThanks @vincevahala! - Add Switch README and examples. -
#1010
fadae72Thanks @stevegreco! - Fixed left padding on theSearchInputwhen using thecompactprop -
#902
0b2c0ccThanks @vincevahala! - AddCheckboxGroupREADME -
#937
12cc071Thanks @stevegreco! - Updated prop data forLink,BreadcrumbandMessageBlock -
#1057
29f6bbcThanks @vincevahala! - - Add ToggleButton README for ToggleButton and ToggleButtonGroup.- Remove CustomCSSProperties from ToggleButton.
-
#843
f089a1eThanks @stevegreco! - Updated dependencies to be up-to-date -
#1039
3a55713Thanks @vincevahala! - Add IconButton README and documentation. -
#1045
45d41c7Thanks @vincevahala! - Add BannerMessage README. -
#963
b8fe496Thanks @vincevahala! - - Added Props Table documentations to Modal, Badge, Button READMEs. -
#756
6451ab0Thanks @richard-flosi! - Add Menu component -
#936
a18f6ceThanks @vincevahala! - Add link to docs site in JSDoc and move the other data into component READMEs. -
#1035
4a6652bThanks @stevegreco! - Removedpadding: 0from global form fields and added directly toBaseButton -
#973
241d194Thanks @vincevahala! - Add props table component to the following component READMEs:- Accordion, Checkbox, CheckboxGroup, Chip, DatePicker, Divider, LoadingIndicator, NumberInput, SearchInput, Select, Slider, TextInput.
-
#980
9dd184fThanks @vincevahala! - Fixed inconsistent heights across button variants to ensure uniform sizing and alignment. -
#1051
7729c60Thanks @vincevahala! - Add README for MessageBlock with examples and documentation. -
Updated dependencies [
f089a1e,f089a1e,11b6be4]:- @cfa/[email protected]
- @cfa/[email protected]
- @cfa/[email protected]
0.10.0
Minor Changes
-
#643
47475deThanks @richard-flosi! - Added Card component -
#740
6c6edf1Thanks @vincevahala! - Added Slider component -
#748
a62ee14Thanks @stevegreco! - UpdatedButtonsizes with new Design guidance- Removed the
min-widthfrom the size variants - Adjusted padding values across all three sizes
- Removed the
-
#749
fbd5385Thanks @stevegreco! - Updated Accordion to match new Design guidance.Accordionis now flat by default.- Removed
surfaceprop - Added
elevatedItemsprop
- Removed
-
#816
f55f6f1Thanks @vincevahala! - Added ProgressBar component
Patch Changes
-
#781
a1848e8Thanks @vincevahala! - Correct Chip gap from 6 to 8px -
#768
52fd8fdThanks @stevegreco! - Removed inline style from MessageBlockTitle -
#794
11d9927Thanks @stevegreco! - Fixed issue withBannerMessagethat cause the icon to get smaller on smaller screens -
#776
b665ebfThanks @demispartan! - Removed duplicate CSS fromSwitch -
#878
5788eefThanks @vincevahala! - Fix validation story in RadioGroup -
#799
0b5f2caThanks @vincevahala! - Add Slider visual tests -
#833
02a9a2dThanks @vincevahala! - Migrate component react.mdx page from apps/design-system-docs to packages/react-core by adding README.mdx to existing docs site components -
#875
0fce02eThanks @stevegreco! - Adjusted spacing forTextInputandSelectto allow for better multi column form layouts- Removed
min-heightfrom the description on theTextInput - Added missing
flexproperty to theSelect
- Removed
-
Updated dependencies [
6c6edf1]:- @cfa/[email protected]
0.9.0
Minor Changes
-
#685
f0d5020Thanks @stevegreco! - Added new/serverand/clientexports to support frameworks like NextJS/servercontains components that can be used on the server without the use of theuse clientdirective/clientcontains components that must be imported into components usinguse client.
All components are still exported from the root
@cfa/react-coremodule, these changes only impact specific use cases in SSR frameworks -
#677
2dd0504Thanks @stevegreco! - Updated theDatePickerto be exported asUNSTABLE_*, this is to support the release ofv1and inform users that these components are still in abetastate, the components are being exported as followsDatepicker--->UNSTABLE_DatePicker
Imports for this component will now be different, so you will have to either update your code, or add an alias to your imports as follows.
import { UNSTABLE_DatePicker as DatePicker } from "@cfa/react-core";Also, updated two props on the
SelectandComboBoxcomponents to beUNSTABLEonScrollEnd--->UNSTABLE_onScrollEndonScrollEndOffset--->UNSTABLE_onScrollEndOffset
Patch Changes
-
#735
1d2667eThanks @stevegreco! - Addeddisplay: nonefor inertTab.Panelcomponents that are using theshouldForceMountprop -
#739
6bfd21dThanks @stevegreco! - Removed z-index from theDrawerandModaloverlay components -
#741
6039672Thanks @stevegreco! - Updated React Aria patch version to1.7.1 -
#653
8a2601cThanks @vincevahala! - Add examples.mdx to Button/docs -
#708
f6bc6daThanks @vincevahala! - Fix JSDoc storybook link -
#707
476b2f4Thanks @richard-flosi! - ExportsSelectiontype fromreact-aria-componentsRemoves wrapping<div>fromThemeProvider -
#715
5c4e6d5Thanks @stevegreco! - UpdatedButtonto utilize CSS variables to simplify overriding nested classes -
#682
7d09bbeThanks @stevegreco! - Added component prop documentation for all components -
Updated dependencies [
258fd95,258fd95,258fd95]:- @cfa/[email protected]
- @cfa/[email protected]
0.8.1
Patch Changes
-
#688
53d11aaThanks @stevegreco! - Addedcursor: pointerto theBaseButton -
#675
0e587bdThanks @vincevahala! - Added 8px gap to Button
0.8.0
Minor Changes
-
#605
959bfc3Thanks @stevegreco! - Added internalTagGroupComponent -
#657
169fa92Thanks @stevegreco! - Added analignmentprop to theNumberInputcomponent with options forleft(default) andright
Patch Changes
-
#654
999b112Thanks @vincevahala! - Remove comment from Button/composability.mdx -
#618
83887e3Thanks @stevegreco! - Updated various components to properly destructure theclassNameprop -
#583
698314cThanks @richard-flosi! - Add RangeCalendar and DateRangePicker components. Exports I18nProvider from react-aria-components. -
#671
6e503bfThanks @stevegreco! - Added newPressableandFocusablecomponents to allow for custom triggers in thePopoverandTooltip -
#671
6e503bfThanks @stevegreco! - Updatedreact-aria-componentsto version1.7.0, as well asreact-ariaand@react-aria/test-utils -
#661
f8af9b7Thanks @vincevahala! - Add isPending styles to Button -
#624
42afe07Thanks @stevegreco! - Updated versions ofstorybook,viteandvitest -
#660
d86fb1cThanks @stevegreco! - Updated composability docs forButton -
Updated dependencies [
42afe07]:- @cfa/[email protected]
- @cfa/[email protected]
0.7.1
Patch Changes
-
#615
c03e653Thanks @stevegreco! - Fixed issue withplaceholderstyling in theSelectcomponent -
#598
e0a0b4aThanks @vincevahala! - Add GH link to JSDoc in Button component. Add composability.mdx docs in Button. -
#596
5b4238aThanks @richard-flosi! - Added internalTimeInputcomponent -
#617
069e8b3Thanks @stevegreco! - Fixed issue withAccordion.Itemcustom classNames overriding the internal classes -
#615
c03e653Thanks @stevegreco! - Fixed issue withgapon theAccordionsurface variant
0.7.0
Minor Changes
-
#567
fadb009Thanks @vincevahala! - Added Tabs -
#589
d2dcd33Thanks @stevegreco! - Exported theRouterProvidercomponent fromreact-aria-componentsto support routing functionality in components
Patch Changes
-
#580
3d1b0ecThanks @richard-flosi! - Fix: DatePicker a11y errors -
#589
d2dcd33Thanks @stevegreco! - Fixed issue with the alignment of the Chevron in theAccordion.Item -
#570
a5f4a92Thanks @stevegreco! - Enhanced Input Components- Added additional unit tests
- Updated styles to make the heights consistent across components
- Made small adjustments to the component structures to enable consistent CSS
-
#578
c301fc1Thanks @richard-flosi! - Fix: Calendar a11y landmark error -
#571
961d111Thanks @stevegreco! - Update various unit tests to achieve better code coverage- Updated unit tests to get better code coverage
- Removed inline SVGs and replaced with correct
system-icons - Made small enhancements to various components to enhance testing
-
#587
d4e85d8Thanks @vincevahala! - Add color and fullWidth prop to Tabs. Update Tabs styles after design review. -
#592
c7ad551Thanks @vincevahala! - Use cva on Tabs and add CustomCSSProperties interface.
0.6.0
Minor Changes
-
#560
5ed1b12Thanks @stevegreco! - AddedTextAreacomponent- New
TextAreaprimitive component added - Updated
TextInputto include amultilineprop to render theTextArea - Updated Stories and Styles for
TextInputto be consistent - Added e2e tests for
<TextInput multiline />
- New
-
#539
410023cThanks @stevegreco! - AddedisCloseButtonHiddenprop that removes the Close button from the Modal and DrawerisDismissablenow only enables theModal/Drawerto be closed by clicking outside
-
#557
bb3d3d9Thanks @stevegreco! - Updated disabled styles forAccordion.Trigger -
#545
cf6af06Thanks @stevegreco! - Removed duplicateplacementprop values forTooltipandPopover
Patch Changes
-
#429
c93530bThanks @richard-flosi! - Adds new BaseDateInput, DateInput, Calendar, and DatePicker components -
#523
b8f2740Thanks @stevegreco! - Fixed CSS issues with theSelectcomponent- Added a
min-heightto prevent sizing issues when noplaceholderis used - Removed the default
placeholderso that its only visible when theplaceholderprop is used
- Added a
-
#550
b344709Thanks @vincevahala! - Add JSDoc to Chip.tsx, add docgen config and run pnpm docgen. Update turbo/generators doc-page templates. -
#557
bb3d3d9Thanks @stevegreco! - Fixed issue with padding in theAccordion.Panel
0.5.0
Minor Changes
- #496
cb2e567Thanks @vincevahala! - Extend React detailed html props and attributes for Badge, BannerMessage, Chip
Patch Changes
-
#500
82a8411Thanks @vincevahala! - Use span DetailedHTMLProps and HTMLAttributes in Badge. Fix Badge styles. -
#512
29e8e33Thanks @stevegreco! - - Enhanced Unit Tests forTextInputto validate thetypeprop- Enhanced Unit Tests for
Selectto include different interaction types - Updated Stories for various components to solve a11y warnings
- Added additional Stories for
TextInputandInputto allow for better testing
- Enhanced Unit Tests for
-
#488
9019e75Thanks @vincevahala! - Add JSDoc component descriptions to button, checkbox, numberinput, select, and textinput -
#506
ecc9fb2Thanks @stevegreco! - Fixed issue with spacing on theSwitchcomponent -
#493
c2f23f9Thanks @vincevahala! - Update Divider Docs -
#476
7301d5cThanks @stevegreco! - Updated playwright dependencies to use pnpm catalogs to maintain consistent versions -
Updated dependencies [
7301d5c]:- @cfa/[email protected]
0.4.0
Minor Changes
-
#465
4f051abThanks @stevegreco! - RemovedrenderIconprop from theSelectcomponent -
#465
4f051abThanks @stevegreco! - Added theComboBoxcomponent -
#483
bf27bafThanks @stevegreco! - AddedDrawercomponent -
#486
42e13f5Thanks @stevegreco! - Updated theInput,TextandLabelto contain their own styles related to states. This will enhance composability and consolidate these styles in one place. The states in question are things likeisSuccess,isInvalidandisDisabled -
#440
a290956Thanks @vincevahala! - Adds Divider component
Patch Changes
-
#473
c79b11bThanks @stevegreco! - Fixed issues with TailwindCSS usage- Reset the
moz-focusringtononeon theBaseButtonto prevent unwanted focus styles from appearing after click of thebutton - Set
cursor: defaulton theBaseButton
- Reset the
-
#479
349fb76Thanks @stevegreco! - Fixed issue with Icon Button Story -
Updated dependencies [
3f53c68,3f53c68]:- @cfa/[email protected]
- @cfa/[email protected]
0.3.1
Patch Changes
- #464
7a9eb66Thanks @stevegreco! - Fixed issue with the icon animation for theSelectcomponent.
0.3.0
Minor Changes
-
#446
d325609Thanks @stevegreco! -Selectcomponent updates- Added states for
isInvalid,isSuccess,isDisabled. - Added the
compactvariant - Updated test cases to account for new states
- Updated docs and examples in the README.md
- Added states for
-
#399
c78b5c7Thanks @richard-flosi! - Adds ToggleButton and ToggleButtonGroup components -
#454
571ec45Thanks @stevegreco! - - Removednormalize.cssand updated tomodern-normalizeso our resets can match TailwindCSS to avoid conflicts.- Added specific resets similar to TailwindCSS to our global
index.cssto ensure consistency in resettingmarginandpadding.
- Added specific resets similar to TailwindCSS to our global
Patch Changes
-
#421
fb09925Thanks @richard-flosi! - Remove ariaLabel from Avatar component. -
#426
a0a9f4eThanks @stevegreco! - Updated Vitest to v3 -
#437
49d0f1dThanks @stevegreco! - Updated docs forButton,Checkbox,Select,NumberInputandTextInputusing the new CLI to generate type information.- Added config files for each of the above components
- Added JSDoc comments to ensure that type data was generated correctly
- Ran the CLI to generate the data
-
#426
a0a9f4eThanks @stevegreco! - Enhanced test cases forSelect,ListBoxandGridListusing some of the new utilities provided by@react-aria/test-utils. Also fixed some various small issues with some of the Stories to remove a11y errors. -
#454
571ec45Thanks @stevegreco! - Fixed issue with theIconButtonsizing as reported by @donnycheng1204 -
#426
a0a9f4eThanks @stevegreco! - Updated Storybook to v8.5, which includes a11y testing out of the box -
Updated dependencies [
a0a9f4e,a0a9f4e]:- @cfa/[email protected]
- @cfa/[email protected]
0.2.0
Minor Changes
-
#370
13d105eThanks @stevegreco! - Added the Select, Listbox and GridList components -
#401
d9ca21eThanks @stevegreco! - Added a ThemeProvider component to inject our package css -
#396
bbcbab3Thanks @stevegreco! - Added theBaseButtoncomponent and used it as the base ofButtonandIconButton -
#375
f08a8d7Thanks @richard-flosi! - Avatar Components -
#410
c1318b0Thanks @stevegreco! - Updated the Popover to use the compound component pattern to help with composing other components like the Select
Patch Changes
-
#403
808b384Thanks @richard-flosi! - Add ESLint Rule for react/function-component-definition as function-declaration -
#394
498f70bThanks @richard-flosi! - Updated size prop values and classnames to match -
#418
96486a4Thanks @stevegreco! - Removedcursor: pointerfrom the Checkbox, Radio/RadioGroup and Switch -
#406
1244781Thanks @vincevahala! - Added margin zero to PageLoader component in react-core. -
Updated dependencies [
3d29606,d9ca21e]:- @cfa/[email protected]
0.1.1
Patch Changes
- 3ccec96: Created PageLoader component in react-core and created component specific tokens, in the
loadercollection. - 5068945: Fixing typo in the publish workflow
- 1af715e: Added README files for the Button and Accordion components
- 2bf7069: Fixed issue with dependencies being listed as devDependencies
- 8a99191: Attempting to change the author of the most recent commit for Changesets PR releases
- 61e9b08: Updated deploy keys for GH actions
- ca325b8: Updated react-core README
- 5a1ad3d: Updating publish.yml to attempt to sign commits
- 7cc54e7: Added new token for changesets github config
- 527b1e6: First Beta version
- Updated dependencies [776fcc3]
- Updated dependencies [527b1e6]
- @cfa/[email protected]
- @cfa/[email protected]
- @cfa/[email protected]
0.1.1-beta.0
Patch Changes
- First Beta version