Package release history
This history is included from the package changelog during the build. Entries about retired documentation integrations are omitted from this site. The complete historical changelog remains in the repository. This is not a set of archived API documentation snapshots.
All notable changes to @coreai-ds/react-components are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Historical release scope
Versions 0.2.0 through 0.11.2 below preserve earlier privately distributed package changes. Historical issue numbers refer to the issue tracker used at the time. Version links point to headings in this changelog.
Unreleased
Added
Illiconrenders occupancy-onlyDotGridDataas theme-aware SVG circles at cells-times-pitch pixel dimensions, with diameter-aware pixel alignment and separate custom inline SVG sizing.iconToDotGridconverts static SVG (including local inline CSS masks) and Fluent icons using one canvas pixel per grid cell and an alpha coverage threshold.dotGridToSvgexports editable circle-based SVG for Figma. Both are exported from the main package.- New Fluent-based Illicons use native 20px icons at 2x as the recommended standard: 40 x 40 cells, rendered at 200 x 200px with the default 2px dots and 5px pitch. Storybook retains other native sizes, multipliers, and actual-canvas previews for verification.
- A searchable Storybook artwork gallery previews reviewed SVGs and copies their original markup; saved-data catalog integration remains separate.
CopyButtonacceptscopiedMessagefor illustration-specific confirmation in its anchored tooltip.
Changed
iconToDotGridsampling defaults to SVG viewBox dimensions timesmultiplier(default 2), replacing the fixed-24-cell default and supersampled center-point sampling. Usemultiplier: 1for native resolution or explicitcolumns/rowsfor a custom grid, not both. Regenerating data can change dimensions and occupancy; existing saved grids and designer artwork remain unchanged.
0.12.0 - 2026-10-16
Breaking
- The package is renamed from
@coreai/fluentui-reactto@coreai-ds/react-components; update package dependencies, imports, and the npm registry scope. The workspace directory is nowpackages/react-components. - Aptos/Aptos Mono binaries are no longer redistributed. The existing
@coreai-ds/react-components/fonts/fonts.cssimport now registers locally installed fonts only; remove deep.ttfimports and supply separately licensed assets/CSS if self-hosted fonts are required. Otherwise proportional text falls back to Inter and then system fonts.
Changed
- Version 0.12.0 is the first public npm release as
@coreai-ds/react-components; earlier versions were distributed privately as@coreai/fluentui-react. - CSS Modules guidance uses an opt-in, app-owned layered Griffel renderer instead of patching shared dependencies.
Accordionremoves the defaultAccordionHeaderbutton padding andAccordionPanelmargin so content aligns with its surroundings, and keeps the expand icon vertically centered without stretching alongside tall header content.- Added Inter as the proportional and numeric fallback after Aptos; the hosted apps load normal and italic Inter faces at weights 400, 600, and 700 from Google Fonts.
- Package tarball verification checks compiled exports and excludes source files and locally installed font assets.
Fixed
- Elevated
TabListuses interactive hover and pressed colors, preserves selected colors across interaction states, and excludesaria-disabledrouter tabs from enabled hover and pressed styles.
0.11.2 - 2026-10-05
Fixed
CoreAIFluentProvideris exported directly from the package entry point, removing its circular dependency with the CoreAI theme module.
0.11.1 - 2026-09-15
Fixed
Textresets browser default margins for semantic elements such as headings and paragraphs, and unset typography properties inherit from the CSS parent. Fixes historical issue 246.- CoreAI typography uses responsive letter spacing based on each element's computed font size to improve perceived word spacing. Fixes historical issue 264.
0.11.0 - 2026-09-08
Changed
- Lowered the minimum supported
@fluentui/react-componentsversion from9.74.0to9.70.0, the first release supporting React 19 and containing every Fluent API currently used or re-exported by this package. - Fluent development dependencies now track the latest exact releases while CI separately validates the peer minimums (
react-components9.70.0,react-icons2.0.316). - Added Vite SSR and Vitest guidance for working around Fluent Icons' invalid Node ESM output.
- Source code, pull requests, and CI/CD moved from GitHub to Azure DevOps. The former GitHub repository remained the issue tracker.
Selectnow defaults toappearance="filled-darker"when CoreAI component defaults are enabled; passappearance="outline"to retain Fluent's default appearance.LinkButtonaccepts an anchor-compatible component throughas, enabling framework router links while retaining its Button API and anchor semantics.- Anchor-backed
CardandTabcomponents no longer inherit native link underlines.
Fixed
- Inline-label
Dropdownforwards its trigger ref so popup positioning and keyboard focus work correctly. - Component prop documentation reports CoreAI's runtime
shapeandappearancedefaults instead of the overridden Fluent defaults.
0.10.0 - 2026-08-21
Breaking
- Removed the deprecated
*ComplexNav component and type aliases. Replace imports such asNavComplex/NavComplexPropswith their original Fluent names (Nav/NavProps), or adopt the CoreAINavtemplate. - Removed
useButtonAlignContent,useTabListAlignContent, and their related types. Replace them with a localmakeStylesclass whose negativemarginInlinematches the component's horizontal padding.
Added
CodeBlocksupports fixed-height scrolling, optional footer content, andfallbackContentfor loading or empty states whencodeis empty or omitted.
Changed
LinkButtonnow renders CoreAIButtonwith a native anchor root, supports the complete Button content and visual API plus native anchor attributes, and adds Link'sexternalbehavior. Fixes historical issue 299.
Fixed
- Interactive
Cardno longer overrides custom colors on nestedTextcomponents. TabListno longer emits invalid:not[disabled]CSS that Chromium rejects during stylesheet insertion. Fixes historical issue 381.
0.9.0 - 2026-08-17
Added
FileUpload— thin, styledreact-dropzonewrapper with selected dropzone options and render state. Validation messages, upload state, and presentation remain application-owned.CopyButtonsupportsonCopySuccessandonCopyErrorcallbacks for outcome-dependent behavior.
Fixed
- Wrapped component exports are independently tree-shakeable, so importing one component no longer makes unrelated Fluent component packages reachable. Fixes historical issue 334.
0.8.1 - 2026-08-07
Fixed
- Declared
@fluentui/react-iconsas a peer dependency so consumers install the icons used by shipped components.
0.8.0 - 2026-08-07
Breaking
CodeBlockcopy visibility propshowCopyButtonwas renamed tohideCopybuttonand its polarity was inverted. ReplaceshowCopyButton={false}withhideCopybutton; removeshowCopyButtonwhen the copy button should remain visible.- Removed the
@fluentui/react-datepicker-compat/react-timepicker-compat/react-calendar-compatbarrel re-exports, and the wrappedDatePicker/TimePickercomponents built on them. Use the nativeDateTimePickerinstead, or install the compat packages directly and import from them if you still need the popup calendar / dropdown-list UI. - Fully removed
@fluentui/react-menu-grid-previewsupport (previously an optional peer, per the[0.4.0]entry below). It's no longer declared anywhere in this package; install it directly and import from it if you need grid menus.
Added
- Vitest Browser Mode component testing for CoreAI-owned functionality, with
CopyButtonclipboard behavior as the first covered interaction. CodeBlocksupports arbitrary header content with divided and subtle appearances, optional header styling, and an optional hidden copy button.DateTimePicker— new native component wrappingInput, restrictingtypeto HTML's temporal input types (date[default],time,datetime-local,month,week), as a lighter-weight alternative to the compatDatePicker/TimePicker's popup calendar / dropdown list.value/defaultValue/min/maxare plainDateobjects;onChangereports(event, { value: Date | null }).onValidationResult(event, { error })mirrors the compatDatePicker's callback, derived from the native input'sValidityState.clearableadds an "x" button that clears to empty, or resets todefaultValueif one was provided.
Changed
Link externalnow defaultstarget="_blank"andrel="noopener noreferrer"; explicittargetandrelvalues still override the defaults.Markdownexternal links use this behavior.
Fixed
CopyButtonnow shows its "Copied" confirmation only when the clipboard write succeeds.- Package entry points now load the compiled
distoutput instead of raw TypeScript source; emitted relative ESM imports include.jsextensions for native Node.js resolution.
0.7.2 - 2026-07-31
Fixed
DataGridresizableColumnsworks again. The wrappedDataGridHeaderCell/DataGridCellalways passed astyleprop (undefinedwhen there was nocolumnFlexOptionsoverride), and Fluent spreads caller props after its column-sizing props — so thewidth/minWidth/maxWidthfromcolumnSizingOptionsand from dragging were overwritten and columns never changed width.styleis now only forwarded when there is one. No consumer action needed. Fixes historical issue 273.Cardappearance="subtle"hover background now usescolorNeutralBackground3Hoverinstead of Fluent's defaultcolorSubtleBackgroundHover, matching the side nav hover weight in light mode. Fixes historical issue 271.
0.7.1 - 2026-07-29
Fixed
- Azure dark theme — link color upgraded from brand-90 (
#2886de) to brand-100 (#479ef5) to pass WCAG AA contrast (4.36:1 → 5.8:1 against#1f1f1f). Hover shifted from brand-110 to brand-120 to preserve visual step. Added missingcolorBrandForegroundLinkSelectedoverride to light theme.
0.7.0 - 2026-07-28
Added
Changed
DataGridnow defaultsselectionAppearanceto"neutral"instead of Fluent's"brand"; passselectionAppearance="brand"to retain the Fluent default.
0.6.0 - 2026-07-27
Added
- Azure theme — new
azureLightTheme/azureDarkThemeexports built on the Azure/Coherence brand ramp (#0f6cbdat brand-80), sourced from the Coherence CDN theme CSS and live dark-mode token extraction. Shares CoreAI's neutral palette, Aptos fonts, and interactive background tokens; only brand-derived colors differ. File:src/theme/azureTheme.ts. Also exportsazureBrandVariantsandAzureThemetype.
Changed
createCoreAIDarkThemefactory now includes the neutral background dark-theme overrides (previously only applied in the finalcoreaiDarkThemeconstant). This ensures any theme built with the factory inherits CoreAI's high-contrast neutral backgrounds automatically.
0.5.0 - 2026-07-24
Added
DataGrid— new wrapped component (withDataGridHeaderCell/DataGridCellwrappers) adding an opt-incolumnFlexOptionsfeature: a CSS-only, non-interactive alternative toresizableColumnsfor static layouts — per-columnflexGrow/flexShrink/flexBasis/minWidth/maxWidthoverrides keyed bycolumnId, picked up automatically by the cell wrappers viauseColumnIdContext(). For text truncation, passtruncatetoTableCellLayoutdirectly rather than viacolumnFlexOptions.
Fixed
- Fixed
mergeClassesoverride-priority bug incustomStyleHooks_unstable-driven style hooks (Table,Button,Card,Dialog,Overlay,Accordion,Tag) where a consumer's instanceclassNamewas silently dropped for any CSS property also set by the CoreAI theme, because the theme classes were merged in after Fluent's own default+instance fusion. Style hooks now appendgetSlotClassNameProp_unstable(slot)as the finalmergeClassesargument so priority is correctlystock Fluent default < CoreAI theme < consumer instance className. Seecode-conventions.mdfor the required pattern going forward. Table/DataGrid— fixed a horizontal scrollbar appearing whenresizableColumnsis enabled, caused by the header/cell border adding 2px outside the box; header/body/row/cell elements now usebox-sizing: border-box.
0.4.0 - 2026-07-22
Breaking
- Removed eager
export * from '@fluentui/react-menu-grid-preview'from the barrel. The package is now an optional peer — consumers who need grid menus shouldnpm install @fluentui/react-menu-grid-previewand import from it directly instead of through@coreai-ds/react-components. This fixes CI failures in environments whose npm feed does not mirror preview-channel Fluent packages.
Added
Text— newpresetprop (TextPreset:heading1–heading4,heading5/bodyStrong,body,heading6/bodySStrong,bodyS,bodyXSStrong,bodyXS) that suppliessize/weightdefaults in place of Fluent's fixed typography-ramp preset components. Explicitsize/weightprops still overridepreset.
Deprecated
- Fluent's low-level
Navcomponent family is now re-exported from the barrel under its original names, with the components flagged@deprecatedin favor of the CoreAINavtemplate. Their types remain available under their original names and are not deprecated. Migration: adopt the CoreAINavtemplate. File:src/components/Nav.deprecated.ts. - Fluent's fixed typography-ramp
Textpresets are now re-exported from the barrel flagged@deprecated, in favor of the CoreAITextcomponent'ssize/weightprops (or the newpresetprop above). Deprecated components (names unchanged):Body1,Body1Strong,Body1Stronger,Body2,Caption1,Caption1Strong,Caption1Stronger,Caption2,Caption2Strong,Display,LargeTitle,Subtitle1,Subtitle2,Subtitle2Stronger,Title1,Title2,Title3. The sharedTextPresetPropstype is re-exported but NOT deprecated. Migration: replace<Body1>with<Text preset="body">(or explicitsize/weight), etc. File:src/components/Text.deprecated.ts.
Breaking
Markdownno longer renders math ($…$/$$…$$) out of the box. Removed the built-inremark-math/rehype-katexplugins and the top-levelkatex/dist/katex.min.cssimport, which forced bundlers to emit ~1.1MB of KaTeX fonts on every consumer of the barrel. To restore math:import remarkMath from 'remark-math'; import rehypeKatex from 'rehype-katex'; import 'katex/dist/katex.min.css';then passremarkPlugins={[remarkMath]} rehypePlugins={[rehypeKatex]}to<Markdown>.
Fixed
Card— outline appearance no longer shows hover/active background on non-interactive cards.
0.3.0 - 2026-07-09
Added
Text— wraps Fluent'sTextwith aforegroundprop (1 | 2 | 3 | 4 | 'disabled') that maps to thecolorNeutralForeground1–colorNeutralForeground4/colorNeutralForegroundDisabledtokens, and anuppercaseboolean that appliestext-transform: uppercasewith tracking. Also adds size-aware letter-spacing for sizes100/200/300. Without these props, behaves identically to Fluent'sText.Avatar— wraps Fluent'sAvatarwith an additional"neutral-alt"colorvalue (maps tocolorNeutralBackground1, vs. plain"neutral"'scolorNeutralBackground4), for a neutral avatar that needs contrast on a higher-elevation surface. ExportsAvatarPropsandAvatarColortypes.Link— wraps Fluent'sLinkwith anexternalprop. Whentrue, renders an inline external-link icon (bundleIcon(OpenFilled, OpenRegular)) after the link text that fills on hover/focus; the icon is decorative (aria-hidden). Default behavior is unchanged from Fluent'sLink.Cardwrapper — adds afloatingActionPositionprop ('right' | 'left', default'right') that repositions the.fui-Card__floatingActionslot (stock Fluent only pins it right), and defaultsappearanceto'filled-alternative'when component defaults are enabled. ExportsCardPropsandCardFloatingActionPositiontypes.createCoreAILightTheme/createCoreAIDarkThemetheme factories — build aCoreAIThemefrom arbitraryBrandVariants, enabling custom-brand themes.coreaiLightTheme/coreaiDarkThemeare now built via these factories.LinkButton— a native<a>anchor styled with the native FluentButtonchrome (appearance,shape,size,disabled), for cases that need a real, navigable link rather than a<button>. Uses the sameuseButtonStyles_unstabletechnique asDropdownButton. Since<a>has no nativedisabled, it's emulated:hrefis stripped,aria-disabledis set, the element is removed from tab order, and click/keyboard activation is suppressed.InfoButton— a button that reveals supplemental info in aPopover. Wraps Fluent'sInfoButton, requires an accessible name (aria-labeloraria-labelledby), and mirrors primitiveinfocontent into the Popover surface'saria-labelso it is announced on focus.MessageBar— wraps Fluent'sMessageBarwith an additionalintent="brand"value styled with the brand token ramp (colorBrandBackground2surface,colorBrandStroke2border,colorBrandForeground1icon).brandmaps internally to Fluent'sinfointent so the default icon and polite aria-live announcement are preserved; the other intents are unchanged from Fluent.useButtonAlignContentCSS class utility (withButtonAlignContent,ButtonAlignContentOptions, andButtonAlignContentSizetypes) — returns a size-aware class that optically aligns a subtle/transparent button's content to its inline edge without shrinking the hit zone. Composes onto any Fluent button slot viaclassName.useTabListAlignContentCSS class utility (withTabListAlignContent,TabListAlignContentOptions, andTabListAlignContentSizetypes) — theTabListcounterpart touseButtonAlignContent; same size-aware cancelling margin, minus theiconOnlyoption since aTab's padding doesn't change for icon-only content.TagPickerwrapped with aappearance: 'filled-darker'default, matching the other input-family components.- Button-family
min-widthoverride (40px, replacing Fluent's stock 96px) applied viacustomStyleHooks_unstabletoButton,MenuButton,ToggleButton,CompoundButton, andSplitButton(icon-only buttons excluded). Gated on component defaults. AccordionHeaderstyle override viacustomStyleHooks_unstable— grid layout, hover, and pressed treatment on the header button. Gated on component defaults.- Tag-family style override via
customStyleHooks_unstable— resets theprimaryTextslot's bottom padding to 0 (Tag,InteractionTagPrimary) and trims theInteractionTagSecondaryborder. Gated on component defaults.
Changed
Input,Combobox, andDropdownnow dim the inline label to the disabled foreground when the control isdisabled, and expose stablefui-Input__label/fui-Combobox__label/fui-Dropdown__labelclass names on the inline label.- Dark theme: bumped
colorInteractiveBackgroundHover(10%→15%) andcolorInteractiveBackgroundSelected(15%→27%) opacities for stronger interactive feedback. useCoreAIGlobalStylesnow sets a default root text color (colorNeutralForeground2) instead of leaving it unset, so unstyled text under aCoreAIFluentProvidermatches the neutral body-text token by default.
Breaking
DropdownButtonreworked to render the native FluentButtonchrome, and now accepts the fullButtonAPI (appearance,shape,size,disabled). Theappearanceprop changed from'default' | 'subtle'(default'default') to the Button set'secondary' | 'primary' | 'outline' | 'subtle' | 'transparent'(default'secondary'). Migration: replaceappearance="default"→appearance="secondary"(or drop it, since'secondary'is the default);appearance="subtle"is unchanged.
0.2.1 - 2026-06-23
Changed
- Renamed the project from its original codename Manifold to CoreAI throughout: package folder (
packages/manifold-fluentui-react→ the CoreAI package folder), brand text, theme keys, and docs. The published package basename was unchanged at that time.
0.2.0 - 2026-06-23
Initial release to the Azure DevOps coreai Artifacts feed (org coreaidesign, scope @coreai-ds).
Added
<CoreAIFluentProvider>drop-in replacement forFluentProvider— applies the CoreAI brand ramp, light/dark token overrides, Aptos typography, per-component default props, and per-component style hooks.coreaiLightTheme/coreaiDarkThemethemes built on the CoreAI brand variants.- Barrel export (
@coreai-ds/react-components) that re-exports the full Fluent UI v9 surface and shadows stock components with CoreAI-wrapped versions. withComponentDefaultsHoC andcomponentDefaultsregistry for per-component default props.customStyleHooks_unstablestyle-hook registry (Card, Overlay, Dialog, Table, …).- Aptos / Aptos Mono
@font-facedeclarations shipped via@coreai-ds/react-components/fonts/fonts.css.
Earlier site release summaries
The previous site's curated summaries are retained below. The package changelog above is the current release record.
0.7.2 — DataGrid and Card reliability fixes (2026-07-31)
Restored resizable DataGrid columns and aligned subtle Card hover styling with CoreAI navigation surfaces.
Fixed
- DataGrid resizableColumns works again because wrapper cells no longer overwrite Fluent column sizing with an undefined style prop.
- Card appearance="subtle" now uses colorNeutralBackground3Hover, matching the side navigation hover weight in light mode.
0.7.1 — Azure link contrast (2026-07-29)
Corrected Azure dark-theme link colors to meet WCAG AA contrast requirements.
Fixed
- Azure dark-theme links moved from brand-90 to brand-100, increasing contrast from 4.36:1 to 5.8:1.
- Hover moved to brand-120 and the missing selected-link override was added to the light theme.
0.7.0 — Agent guidance and neutral selection (2026-07-28)
Shipped package-level agent guidance and changed DataGrid selection to a neutral default.
Added
- A distributable agent/SKILL.md guide now ships with the package and is mirrored in hosted Storybook documentation.
Changed
- DataGrid now defaults selectionAppearance to neutral. Pass selectionAppearance="brand" to retain Fluent's default.
0.6.0 — Azure theme (2026-07-27)
Added Azure-branded light and dark themes while preserving CoreAI's neutral surfaces and typography.
Added
- New azureLightTheme and azureDarkTheme exports built on the Azure and Coherence brand ramp.
- New azureBrandVariants export and AzureTheme type.
Changed
- createCoreAIDarkTheme now includes CoreAI neutral-background overrides for every custom theme built with the factory.
0.5.0 — DataGrid layout controls (2026-07-24)
Expanded DataGrid layout control and fixed consumer style priority across CoreAI component hooks.
Added
- DataGrid, DataGridHeaderCell, and DataGridCell wrappers with opt-in columnFlexOptions for static flexible layouts.
Fixed
- Consumer className styles now correctly override CoreAI customStyleHooks_unstable styles.
- Resizable Table and DataGrid layouts no longer produce an extra horizontal scrollbar.
0.4.0 — Smaller bundles and clearer APIs (2026-07-22)
Reduced default bundle cost, introduced CoreAI text presets, and clarified low-level navigation APIs.
Breaking
- The preview MenuGrid package is now optional and must be installed and imported directly when needed.
- Markdown no longer includes math rendering and KaTeX assets by default.
Added
- Text gained a preset prop for CoreAI heading and body combinations while preserving explicit size and weight overrides.
Deprecated
- Low-level Fluent Nav components moved to Complex aliases in favor of the CoreAI Nav template.
- Fluent typography preset components are deprecated in favor of CoreAI Text presets.
0.3.0 — CoreAI component wrappers (2026-07-09)
Introduced the main wrapped-component layer, custom theme factories, and shared alignment utilities.
Added
- Text foreground and uppercase options, Avatar neutral-alt, external Link, LinkButton, InfoButton, and brand MessageBar.
- Card floatingActionPosition and CoreAI default appearance behavior.
- Custom light and dark theme factories for product-specific brand ramps.
- Button and TabList content-alignment utilities plus new component defaults and style hooks.
Changed
- Dark-theme interactive states gained stronger hover and selected contrast.
- DropdownButton now uses the native Fluent Button API and appearance values.
0.2.1 — CoreAI rename (2026-06-23)
Completed the public rename from the Manifold codename to CoreAI.
Changed
- Renamed package folders, brand text, theme keys, exports, and documentation from Manifold to CoreAI.
- The published package name remained @coreai-ds/react-components.
0.2.0 — Azure Artifacts release (2026-06-23)
Established the first @coreai-ds/react-components release on the CoreAI Azure Artifacts feed.
Added
- CoreAIFluentProvider, light and dark themes, component defaults, style hooks, Aptos fonts, and the Fluent UI barrel export.
- Automated Azure Artifacts publishing through the protected-main release flow.
0.1.2 — Install docs and dark Storybook (2026-06-05)
Improved authenticated package installation and made dark mode the default Storybook experience.
Changed
- Install guidance moved to GitHub CLI authentication with user-level credentials and project-level registry configuration.
- Storybook now starts in dark mode and avoids a white first-paint flash.
0.1.1 — React 19 and automated publishing (2026-06-05)
Removed React 19 installation blockers and automated package publishing from version bumps on main.
Fixed
- React and React DOM peer ranges now support versions from 16.14 through 19.
Changed
- Removed unused Storybook dependencies that forced legacy React peer resolution.
- Publishing now runs automatically when a new package version lands on main and creates the matching tag after success.
0.1.0 — GitHub Packages release (2026-06-04)
Published the first version of the themed Fluent UI React package.
Added
- Initial package publishing workflow for the CoreAI themed Fluent UI React package.
- Consumer installation and release documentation for the first package distribution flow.