Native Solid 2 fork. Original documentation and designs © WorkOS; historical posts retain their original context.
Releases
Radix Themes releases and their changelogs.
3.1.3
- Support indeterminate indicator for the uncontrolled
Checkboxcomponent
3.1.2
- Add
areasprop to theGridcomponent andgridAreaprop to all layout components (Box,Container,Flex,Grid,Section) - Add
overflow-wrap: anywherestyle to theDataListcomponent so that long values—such as IDs—can break over to next line - Support indeterminate indicator for the indeterminate
Checkboxcomponent
3.1.1
- Upgrade Radix Primitives
3.1.0
- Support React 19
- Upgrade all Radix Primitives
3.0.5
- Add
align,height,minHeight, andmaxHeightprops toAlertDialog.ContentandDialog.Content
3.0.4
- Fix an issue when the Radix Themes package couldn’t be bundled with webpack because of a circular dependency within
- Support the
maxprop on the Progress component
3.0.3
- Fix an issue when the theme
grayColorsetting would have no effect in combination with explicitappearance="light"orappearance="dark"values - Fix a regression when
Linkwould use an automatic high-contrast color when an explicitcolorvalue was used. - Fix a regression when
Linkwould not use the correct text selection and focus color when nested in gray text. - Tweak
Linktap highlight style - Tweak
CheckboxGroup.ItemandRadioGroup.Itemso that a layout with overflowing text truncation would be possible to achieve - Remove an unnecessary
data-accent-colorattribute from components where it had no practical effect to be there. - Rework the internals of the
colorprop definition. - Rework the autofilled and disabled colors for
TextFieldandTextArea - Add an internal
--spinner-animation-durationCSS variable for theSpinnercomponent
3.0.2
- Remove unnecessary browser prefixes from the CSS, reducing the bundle size by 17 KB
- Fix a regression when
Linkwould not use an automatic high-contrast color when nested within colored text. - Fix a regression when
Linkwouldn't display hover styles when rendered as abutton - Fix a regression when
TextAreawould not preserve sequences of white space in Firefox
3.0.1
- Fix a syntax error in the reset stylesheet
- Fix Checkbox
size="1"indicator checkmark alignment in Safari - Fix Checkbox and Radio disabled cursor styles not working in Safari
3.0.0
Radix Themes 3.0 comes with a new layout engine, 11 new components, and full ESM support. Read the announcement.
Upgrade guide
This release introduces a number of breaking changes. Please follow the steps below to upgrade.
General
- Multi-part components now don’t export named parts anymore. Use dot notation instead, which was revised to work with React Server Components. For example:
DialogRoot→Dialog.RootDialogTrigger→Dialog.TriggerDialogContent→Dialog.Content- …and so on for all multi-part components:
AlertDialogCalloutContextMenuDialogDropdownMenuHoverCardPopoverRadioGroupSelectTableTabsTextField
- Package internals such as prop definitions and helpers are no longer available from the root
@radix-solid/themesimport entry point.- Import them from
@radix-solid/themes/propsand@radix-solid/themes/helpersinstead.
- Import them from
Props
- The
widthandheightprops on layout components don't map to space scale anymore. Find and replace yourwidthandheightprop usage with the corresponding space scale steps:width="1"→width="4px"width="2"→width="8px"width="3"→width="12px"width="4"→width="16px"width="5"→width="24px"width="6"→width="32px"width="7"→width="40px"width="8"→width="48px"width="9"→width="64px"- …and so on for
height - Make sure to update responsive object syntax as well
- You can also use
var(--space-1)tovar(--space-9)instead of hardcoded values.
- The
shrinkandgrowprops on layout components were renamedshrink→flexShrinkgrow→flexGrow
Colors
If you were using the following tokens for your custom components, make sure to replace the corresponding references.
--color-surface-accent→--accent-surface- Contrast colors were renamed:
--accent-9-contrast→--accent-contrast--red-9-contrast→--red-contrast--pink-9-contrast→--pink-contrast--blue-9-contrast→--blue-contrast- …and so on for all scales
- Added a new focus color scale. Rename the following tokens:
--color-autofill-root→--focus-a3--color-focus-root→--focus-8--color-selection-root→--focus-a5
--gray-2-translucentand the corresponding tinted gray colors were removed.- Use
--color-panel-translucentin combination with a backdrop blur filter instead.
- Use
Components
AlertDialog,Dialognow havemaxWidth="600px"by default on the Content part.- This is slightly larger than the previous
580pxvalue. If you use dialogs that need a different width, overridemaxWidthwith your own value.
- This is slightly larger than the previous
Badgehas a newsize="3",size="2"is now much smaller, andsize="1"dimensions were tweaked- Replace your
size="2"usage withsize="3"
- Replace your
Cardinternal HTML structure and styles were reworked and now renders a single HTML node. Make sure that your code works as expected if you were relying on any of the implementation quirks to override styles or behaviour.- If you need to override the Card’s background color on variants other than
ghost, use--card-background-colorvariable instead of assigningbackground-colordirectly, or set your background color on an<Inset p="current">element nested as the first child of the Card. - Check your Card instances that uses
asChildor isasChild’ed onto by a parent component. (The common case with link or button card without any extra styles will work as expected).
- If you need to override the Card’s background color on variants other than
HoverCardandPopovernow havemaxWidth="480px"by default on the Content part.- If you use popovers and hover cards that need a wider width, override
maxWidthwith your own value.
- If you use popovers and hover cards that need a wider width, override
RadioGroupinternal HTML structure and styles were reworked and is now designed to display an optional text label when passingchildrento theItempart. TheRootpart now also provides flex column styles and spacing.- If you need lower-level control, you can use the
Radiocomponent instead
- If you need lower-level control, you can use the
Sectionhas a newsize="3"- Update all your Sections that used
size="3"tosize="4"
- Update all your Sections that used
Tabsunderlying letter/word spacing CSS variables were renamed to support bothTabsandTabNavcomponents. If you were using them, rename them to the new values:--tabs-trigger-active-letter-spacing→--tab-active-letter-spacing--tabs-trigger-active-word-spacing→--tab-active-word-spacing--tabs-trigger-inactive-letter-spacing→--tab-inactive-letter-spacing--tabs-trigger-inactive-word-spacing→--tab-inactive-word-spacing
TextFieldnow only has 2 parts:RootandSlot, dropping theInputpart and simplifying how props are forwarded.- All
TextField.Inputparts used withoutTextField.Rootshould be renamed toTextField.Root - All
TextField.Inputparts used withinTextField.Rootshould be removed and their props should be put directly on theTextField.Rootpart - All
TextField.Slotparts placed to the right ofTextField.Inputwill needside="right"prop. However, no adjustment is needed when two slots were used within oneTextField, e.g. one slot on the left and another one on the right. In that case, the slots will be automatically placed on different sides. - Make sure that your code works as expected if you were relying on any of the implementation quirks to override styles or behaviour.
- All
Themedoes not set body background color automatically anymore. The background color is now provided by the rootThemeby default. The CSS variable--color-page-backgroundis no longer available.- In most cases, it can be safely replaced with
--color-backgroundavailable on the.radix-themeselement.
- In most cases, it can be safely replaced with
Tooltipnow hasmaxWidth="360px"by default on the Content part.- If you use tooltips that need to be wider, override
maxWidthwith your own value.
- If you use tooltips that need to be wider, override
Full changelog
- General
- Package structure
- Improve ESM compatibility
- Improve tree-shaking of individual component parts
- [Breaking] Drop named exports for multi-part components
- Note: Our new approach allows dot notation to work reliably in server components too
- [Breaking] Remove component prop definitions and internal helpers from the root
@radix-solid/themesimport entry point and export them from@radix-solid/themes/propsand@radix-solid/themes/helpersto make it possible to build your own component library on top of Radix Themes using the same techniques. - Add a wildcard entry point to the package to allow direct access to the package internals as an escape hatch if you have a complex tooling setup that can’t support modern module resolution rules
- Add extra CSS file exports for advanced use-cases:
- Export individual
tokens.css,components.css, andutilities.cssfiles in case you need fine-grained control of the CSS precedence. For example, this allows to import Radix Themesutilities.cssafter your own CSS, and everything else before that. - Additionally to the above, you can customise which colors to import. Instead of importing
tokens.css, you can also importtokens/base.cssandtokens/colors/*.css, where*corresponds to the names of the accent and gray colors you need in your project. - Export
layout.cssthat only includes styles for the layout components (Box, Flex, Grid, Container, Section). Individual exportslayout/tokens.css,layout/components.css, andlayout/utilities.cssare also available to support the above use-case.
- Export individual
- Props
- Add the following props to all layout components:
minWidth,maxWidthminHeight,maxHeightflexBasis,flexShrink,flexGrowgridColumn,gridColumnStart,gridColumnEndgridRow,gridRowStart,gridRowEndoverflow,overflowX,overflowY
- Rework all layout props to allow arbitrary CSS values, including when used with the responsive object syntax. Props that support arbitrary values include:
width,minWidth,maxWidthheight,minHeight,maxHeightm,mx,my,mt,mr,mb,mlp,px,py,pt,pr,pb,plinset,top,right,bottom,leftgap,gapX,gapYflexBasis,flexShrink,flexGrowgridColumn,gridColumnStart,gridColumnEndgridRow,gridRowStart,gridRowEnd
- [Breaking] The
widthandheightprops don't map to space scale anymore. This is because in the vast majority of cases, width and height were not set to space scale, and with that, space scale as an IDE autocomplete suggestion felt odd/misleading. - [Breaking] Rename
shrinkandgrowprops toflexShrinkandflexGrow - Update the type signature of the layout props so that code editor suggestions use just space scale values when possible. CSS keywords and other values such as
"auto"or"100vw"are still available as manual string values. - Document all layout props with JSDoc
- Fix an issue with responsive props when using a breakpoints object without the
initialkey would not apply the default prop value - Remove the native
color,defaultValue, anddefaultCheckedattributes from components that inherit them from the native HTML elements to avoid confusion with their custom implementations - [Breaking] Rework the availability of
asChildprop on all components and parts
- Add the following props to all layout components:
- Colors
- Make sure
highContrasttext colors work consistently when nested within other components that accept an accent color - Tweak the background color of all
variant="soft"menu items - [Breaking] Rename
--color-surface-accentto--accent-surface - [Breaking] Rename
--accent-9-contrast,--red-9-contrast,--pink-9-contrast,--blue-9-contrast, etc. to--accent-contrast,--red-contrast,--pink-contrast,--blue-contrastand so on. - Remove
--gray-2-translucentand the corresponding tinted gray colors - Tweak
--color-surfaceand--color-panel-translucentvalues - [Breaking] Replace
--color-focus-root,--color-selection-root,--color-autofill-rootwith a focus color scale, e.g.--focus-1–--focus-12, and--focus-a1–--focus-a12.
- Make sure
- Other
- Speed up most of the animations
- Ensure all elements that have padding or border styles use
box-sizing: border-box - Ensure that disabled cursor styles are applied correctly
- Add a blur backdrop filter effect to the translucent panels
- Package structure
- 11 new components
DataList- Component for displaying text data as key-value pairs. Parts:
RootItemLabelValue
- Component for displaying text data as key-value pairs. Parts:
CheckboxGroup- Group of checkboxes with an optional text label and roving focus. Parts:
RootItem
- Group of checkboxes with an optional text label and roving focus. Parts:
CheckboxCards- Interactive card components to pick one or more value from the list. Parts:
RootItem
- Interactive card components to pick one or more value from the list. Parts:
Progress- Progress bar component that indicates completion of a task.
Radio- Standalone element for building your own layouts with radio inputs.
RadioCards- Interactive card components to pick one of the values from the list. Parts:
RootItem
- Interactive card components to pick one of the values from the list. Parts:
Reset- Component that resets the styles for any native HTML element.
SegmentedControl- Component for selecting a single option out of many and for controlling tab-like interfaces
Skeleton- Component that may wrap any UI element and turn it into a loading skeleton. Can also render self or a React Fragment conditionally using a
loadingprop.
- Component that may wrap any UI element and turn it into a loading skeleton. Can also render self or a React Fragment conditionally using a
Spinner- Loading spinner component. Like
Skeleton, it also may wrap any UI element and display itself using a conditionalloadingprop.
- Loading spinner component. Like
TabNav- Equivalent for
Tabs, but used for page navigation. Renders regular links and supports roving focus. Parts:RootLink
- Equivalent for
AlertDialog,Dialog- Add
position: relativeto support absolutely positioned children. - Add
width,minWidth,maxWidthprops to the Content part. - Set
maxWidth="600px"by default on the Content part. - Rework the scroll container so that it displays scrollbars on the viewport rather than confined to the dialog Content part. Make sure that your code works as expected if you were relying on any of the implementation quirks to override styles or behaviour.
- Add
Badge- Remove
user-select: none - [Breaking] Add
size="3", makesize="2"much smaller, tweaksize="1"dimensions
- Remove
Blockquote,Code,Em,Heading,Quote,Link,Strong,Text- Add new
wrapandtruncateprops that control whether the text wraps and whether it is truncated with ellipsis
- Add new
Card- Rework the internal HTML structure and styles. This component now renders a single HTML node. Make sure that your code works as expected if you were relying on any of the implementation quirks to override styles or behaviour.
Codevariant="ghost"color now works similarly to Text, inheriting the color unless set explicitly using thecolorprop
Container- Add
alignprop to control whether the container content is aligned to the left, center, or right - [Breaking] Change the
display="block"value todisplay="initial"(the former value was broken)
- Add
ContextMenu,DropdownMenu- Add
colorprop toCheckboxItemandRadioItemparts
- Add
Checkbox,RadioGroup,Switch- Rework the internal HTML structure and styles. These components now render fewer HTML nodes and forward all props to the topmost node. Make sure that your code works as expected if you were relying on any of the implementation quirks to override styles or behaviour.
DropdownMenu- Use a brighter text color for the highlighted item when the Content part uses
variant="soft" - Add an optional
TriggerIconpart that renders an arrow down indicator
- Use a brighter text color for the highlighted item when the Content part uses
Box,Flex,Grid- Add support for
asprop to render asspanordiv - For Box,
display: blockstyle is now enforced regardless of the tag
- Add support for
Button,IconButton- Add new
loadingprop
- Add new
Flex- Add
gapXandgapYprops
- Add
HoverCard,Popover- Add
position: relativeto support absolutely positioned children. - Add
width,minWidth,maxWidth,height,minHeight,maxHeightprops to the Content part. - Set
maxWidth="480px"by default on the Content part.
- Add
RadioGroup- [Breaking] Rework the internal HTML structure and styles. This component is now designed to display an optional text label when passing
childrento theItempart, and theRootpart now provides flex column styles and spacing.
- [Breaking] Rework the internal HTML structure and styles. This component is now designed to display an optional text label when passing
Section- [Breaking] Change the
display="block"value todisplay="initial"(the former value was broken) - [Breaking] Use a new value for
size="3", use the previous value forsize="4"
- [Breaking] Change the
Select- Make sure that Trigger font weight is not inherited, e.g. from a wrapping
<label>element
- Make sure that Trigger font weight is not inherited, e.g. from a wrapping
Separator- Allow responsive values for the
orientationprop
- Allow responsive values for the
ScrollArea- Fix an issue when Scroll Area would be unable to stretch to 100% height when informed by the parent’s auto height
Slider- Change the size of the bounding box to match the size of the Slider track
- Replace
flex-shrink: 0withflex-grow: 1andwidth: stretch/height: stretchto allow the slider element to flex and shrink in layouts more intuitively. - Fix an overzealous focus outline in Safari
Table- Add new
layoutprop to control thetable-layoutstyle property - Align
widthprop type signature and implementation on theTableCellpart with the reworkedwidthprop on the layout components - Add
minWidthandmaxWidthprops to theTableCellpart
- Add new
Tabs:- Add
colorandhighContrastprops toTabsList - Add margin props
TabsListandTabsContent - Renamed the letter/word spacing CSS variables in
.radix-themesso that it supports bothTabsandTabNavcomponents.--tabs-trigger-active-letter-spacing→--tab-active-letter-spacing--tabs-trigger-active-word-spacing→--tab-active-word-spacing--tabs-trigger-inactive-letter-spacing→--tab-inactive-letter-spacing--tabs-trigger-inactive-word-spacing→--tab-inactive-word-spacing
- Add
TextArea- Add
radiusprop - Add
resizeprop - Fix an issue when Grammarly extension would break the component styles
- Make sure that the font weight is not inherited, e.g. from a wrapping
<label>element - Rework the internal HTML structure and styles. Make sure that your code works as expected if you were relying on any of the implementation quirks to override styles or behaviour.
- Add
TextField- [Breaking] Remove the
Inputpart to simplify how props are forwarded and rework internal HTML structure and styles. - Fix an issue with some input
types not supportinggetSelectionRange - Fix an issue when Grammarly extension would break the component styles
- Make sure that the font weight is not inherited, e.g. from a wrapping
<label>element
- [Breaking] Remove the
ThemePanel- Change the hotkey to toggle the Theme Panel to "T" keypress and dark mode to "D" keypress (without modifiers).
Theme- Set
min-height: 100vhon the rootThemecomponent - Fix an issue when in certain situations,
hasBackgroundprop value would have no effect - Refine the logic for when
Themehas a background color by default.Themewithout an explicithasBackgroundprop will display a background color:- When it is the root
Themecomponent - When it has an explicit appearance value, e.g.
<Theme apperance="light">or<Theme apperance="dark">
- When it is the root
- Body background color is no longer set automatically. The background color is now provided by the root
Themeby default.- [Breaking] The CSS variable
--color-page-backgroundis no longer available. suppressHydrationWarningonhtmlis no longer needed (unless required by other libraries, likenext-themes)
- [Breaking] The CSS variable
- Document all Theme props with JSDoc
- Set
Tooltip- Add
width,minWidth,maxWidthprops. - Set
maxWidth="360px"by default on the tooltip content - Change the default delay duration to 200ms
- Add
2.0.2
- Fix an issue when Chrome would sometimes crash while using CSS inspector on a Radix Themes stylesheet.
2.0.1
Card- Fix an issue when
variant="surface"border color may disappear in browsers that don't supportcolor-mix. - Tweak
variant="surface"border color.
- Fix an issue when
Code- When
variant="ghost"is used within aLink, make sure thatunderline="hover"on theLinkis respected.
- When
TextField- Improve vertical text alignment with common fonts.
- Don’t apply the autofill accent color when the input is disabled.
- Make sure the autofill accent color always pairs with the focus outline color.
2.0.0
- General
- Combine selectors in the CSS build, improving the developer experience when inspecting elements in the browser.
- Remove comments from the CSS build.
- Cap CSS selector specificity at
0,1,0for styling HTML elements and at0,1,1for styling pseudo-elements, improving compatibility with Tailwind.- [Upgrade guide] If you were relying on any specificity quirks of Radix Themes, make sure that your style overrides still work as expected.
- Rework dark mode colors, refine light mode colors (via Radix Colors 3.0.0).
- Fix oversaturated transparent grays.
- [Upgrade guide] If you were using the color tokens for your custom styles, make sure that your designs look as expected.
- [Upgrade guide] If you were overriding certain colors, make sure that your overrides are harmonized with the new color scales.
- Rework transparent black and white color scales.
- [Upgrade guide] If you were using transparent black and white color scales for your custom styles (
--black-a1,--white-a1, etc.), make sure to check the new values and update the steps used so that your designs look as expected:- Change
--black-a1torgba(0, 0, 0, 0.01). - Change
--black-a2torgba(0, 0, 0, 0.024). - Change
--black-a3to--black-a1. - Change
--black-a4to--black-a2. - Change
--black-a5to--black-a2. - Change
--black-a6to--black-a3. - Change
--black-a7to--black-a3or--black-a4. - Change
--black-a8to--black-a5. - Change
--black-a9to--black-a6or--black-a7. - Change
--black-a10to--black-a7. - Change
--black-a11to--black-a8. - Change
--black-a12to--black-a11. - Change
--white-a1totransparent. - Change
--white-a2torgba(255, 255, 255, 0.01). - Change
--white-a3to--white-a1or--white-a2. - Change
--white-a4to--white-a2. - Change
--white-a5to--white-a3. - Change
--white-a6to--white-a3or--white-a4. - Change
--white-a7to--white-a4. - Change
--white-a8to--white-a5. - Change
--white-a9to--white-a6. - Change
--white-a10to--white-a7. - Change
--white-a11to--white-a9. - Change
--white-a12to--white-a11or--white-a12.
- Change
- [Upgrade guide] If you were using transparent black and white color scales for your custom styles (
- Refine the shadow scale.
- Maintain theme accent color for focus rings on most
color="gray"component, similarly to the text selection color. - Change some internal component-specific CSS variables to follow a naming pattern.
- Make sure that forced light/dark appearance on the
Themecomponent also sets the corresponding browser colors, like the correct input autofill background color. - Rename all
@keyframesanimations withrt-prefix and into kebab case. - Use
outlinerather thanbox-shadowfor most focus styles, which avoids a slight anti-aliasing issue in Chrome on focused elements.
AlertDialog,Dialog- Add padding around dialog content to prevent it from touching the viewport edges.
- Make sure that the dialog content doesn’t overflow viewport on iOS.
Avatar- Don’t enforce fallback icon size.
- [Upgrade guide] If you were using
svgassets as a fallback, make sure to set an appropriate size manually.
- [Upgrade guide] If you were using
- Add CSS variables to control the cursor style on interactive elements:
--cursor-button: default;--cursor-checkbox: default;--cursor-disabled: not-allowed;--cursor-link: pointer;--cursor-menu-item: default;--cursor-radio: default;--cursor-slider-thumb: default;--cursor-slider-thumb-active: default;--cursor-switch: default;
- Replace
.rt-reset-buttonand.rt-reset-aclasses with a single.rt-resetclass.- The new
.rt-resetclass can be use to reseta,button,h1,h2,h3,h4,h5,h6,ol,ul,p, andpretags when building custom components. - [Upgrade guide] If you were using these classes for your custom components, update the class name used.
- The new
- Don’t enforce fallback icon size.
Blockquote- [Breaking] Remove
trimprop.
- [Breaking] Remove
Button,IconButton- Refine and normalise the look and feel of the disabled states.
- Apply disabled styles to other elements when using
disabledtogether withasChild - Improve
variant="classic"look and feel across different accent colors in light and dark mode.
Callout- Tweak how the layout works to allow nesting multiple
Callout.Textelements withinCallout.Root- [Upgrade guide] If you were relying on how
Callout.Roothappened to provide flex properties, change your layout to use aFlexcomponent explicitly.
- [Upgrade guide] If you were relying on how
- Fix an issue when the callout would inherit text color unless an explicit
colorprop was passed.- [Upgrade guide] If you preferred the previous look, pass
highContrastprop to your callouts to make the text darker.
- [Upgrade guide] If you preferred the previous look, pass
- Use a gray background for a gray
variant="surface". - Use a darker outline color
variant="outline".
- Tweak how the layout works to allow nesting multiple
Checkbox- [Breaking] Improve layout so that wrapping a checkbox in
Textcomponent automatically aligns the checkbox with the first line of the text.- [Upgrade guide] Make sure that your layouts with checkboxes look as expected. If not, wrap your checkboxes in
<Text as="label" size="...">, using your preferred text size.
- [Upgrade guide] Make sure that your layouts with checkboxes look as expected. If not, wrap your checkboxes in
- [Breaking] Rework sizes – add a smaller
size="1", change the default size tosize="2", add a more refinedsize="3"- [Upgrade guide] If you were using
size="1"orsize="2"checkboxes via an explicitsizeprop, rename them tosize="2"andsize="3"respectively.
- [Upgrade guide] If you were using
- Refine the look and feel of
variant="classic". - Refine and normalise the look and feel of the disabled states.
- [Breaking] Improve layout so that wrapping a checkbox in
Card- Update the
variant="classic"shadow so that it doesn’t extend outside of the element. - Refine hover and pressed styles for
variant="classic". - Add missing pressed styles.
- Refine how the inner shadows are applied so that they blend with the background outside of the component.
- Update the
Code- Add interactive styles when
Codeis withinLink. - Fix an issue when
variant="ghost"font size would be inconsistent depending on whether the size was based on a parentTextelement or came from the code’s ownsizeprop. - Scale the outline thickness relative to the font size for
variant="outline"andvariant="surface". - Improve
::selectionbackground color forvariant="solid". - Add CSS variables to
.radix-themesfor customising the padding ofCodevariants in case the default values don’t work well with the vertical metrics of custom code font.--code-padding-top--code-padding-bottom
- Add interactive styles when
DropdownMenu,ContextMenu- Reduce border radius when theme setting is
radius="full". - Refine horizontal paddings.
- Refine label look and feel.
- Reduce border radius when theme setting is
Grid- Fix a bug when nesting
Gridcomponents could cause the descendantGrid’s to inherit some parent styles unintentionally.
- Fix a bug when nesting
Inset- Add
clipprop to control whether content is clipped to the padding or to the border of the parent element. - Automatically adjust table cell padding for when
Tableis insideInset
- Add
Kbd- Tweak vertical alignment.
Link- Desaturate the underline color.
- Make links automatically high-contrast within colored
Headingelements (similarly to the automatic high-contrast withinText). - Scale the underline thickness relative to the font size for
variant="outline"andvariant="surface".
RadioGroup- [Breaking] Improve layout so that wrapping a radiobutton in
Textcomponent automatically aligns the radiobutton with the first line of the text.- [Upgrade guide] Make sure that your layouts with radio buttons look as expected. If not, wrap your radio buttons in
<Text as="label" size="...">, using your preferred text size.
- [Upgrade guide] Make sure that your layouts with radio buttons look as expected. If not, wrap your radio buttons in
- [Breaking] Rework sizes – add a smaller
size="1", change the default size tosize="2", add a more refinedsize="3".- [Upgrade guide] If you were using
size="1"orsize="2"radio buttons via an explicitsizeprop, rename them tosize="2"andsize="3"respectively.
- [Upgrade guide] If you were using
- Refine the look and feel of
variant="classic". - Refine and normalise the look and feel of the disabled states.
- [Breaking] Improve layout so that wrapping a radiobutton in
Select- Fix invisible scrollbar in long item lists.
- Improve
variant="classic"look and feel across light and dark mode. - Align
SelectContentto the left of the trigger when usingposition="popper". - Refine horizontal paddings.
- Refine label look and feel.
- Rework
size="3".
ScrollArea- Upgrade the primitive version, fixing an upstream type issue.
- Rename scrollbar margin variables to include the scrollbar orientation and declare them on
.radix-themesto facilitate easier scrollbar position adjustments.- [Upgrade guide] If you were using the variables
--scrollarea-scrollbar-margin-top,--scrollarea-scrollbar-margin-left, etc. make sure that they follow the new names and are set at the appropriate level. There's no need to target.rt-ScrollAreaScrollbarelement to set the variables anymore, as they can be set just on the component that needs the override. New variables:--scrollarea-scrollbar-horizontal-margin-top--scrollarea-scrollbar-horizontal-margin-bottom--scrollarea-scrollbar-horizontal-margin-left--scrollarea-scrollbar-horizontal-margin-right--scrollarea-scrollbar-vertical-margin-top--scrollarea-scrollbar-vertical-margin-bottom--scrollarea-scrollbar-vertical-margin-left--scrollarea-scrollbar-vertical-margin-right
- [Upgrade guide] If you were using the variables
Slider- Refine the shadows and colors used in the components.
- Refine and normalise the look and feel of the disabled states.
- Fix an issue where high contrast sliders would have an incorrect disabled style.
Switch- [Breaking] Improve layout so that wrapping a switch in
Switchcomponent automatically aligns the switch with the first line of the text.- [Upgrade guide] Make sure that your layouts with switches look as expected. If not, wrap your switches in
<Text as="label" size="...">, using your preferred text size.
- [Upgrade guide] Make sure that your layouts with switches look as expected. If not, wrap your switches in
- [Breaking] Rework sizes, making
size="2"andsize="3"smaller.- [Upgrade guide] Use
size="3"instead ofsize="2"to match the previous look.
- [Upgrade guide] Use
- Refine the shadows and colors used in the components.
- Refine and normalise the look and feel of the disabled states.
- [Breaking] Improve layout so that wrapping a switch in
Table- Refine how the outer border is applied so that it blends with the background outside of the component.
Tabs- Add CSS variables to
.radix-themesfor customising the letter spacing and word spacing of active and inactive tabs so that you can minimise the apparent shift in weight in case the default values don’t work for your custom font.--tabs-trigger-active-letter-spacing--tabs-trigger-active-word-spacing--tabs-trigger-inactive-letter-spacing--tabs-trigger-inactive-word-spacing
- Add CSS variables to
Text- Add
as="label"option to theasprop. - Improve how prop types are resolved when
asprop isn’t specified.
- Add
TextArea- Rework the internal implementation, now using multiple HTML nodes for styling purposes.
- Adjust the layout styles so that
TextAreabehaves like a truedisplay: blockelement, filling the available space horizontally. - The
styleandclassNameare now forwarded to the wrappingdivelement. Therefand other props are still forwarded to thetextareaitself. - [Upgrade guide] If you were overriding
TextAreastyles viastyle,className, or custom CSS that targets the related HTML nodes, make sure that your custom styles work as expected. - [Upgrade guide] If you were relying on the intrinsic width of
TextAreaset by the browser, make sure that your layout looks as expected.
- Adjust the layout styles so that
- Refine padding values for a more balanced look.
- Use matching scroll margins for a nicer typing experience when the
TextAreaoverflows.
- Use matching scroll margins for a nicer typing experience when the
- Refine how the inner shadows are applied so that they blend with the background outside of the component.
- Refine and normalise the look and feel of disabled and read-only states.
- Fix a Safari bug when the text value would appear tinted in the disabled input.
- Improve autofill styles.
- Rework the internal implementation, now using multiple HTML nodes for styling purposes.
TextField- Reset
z-indexof the container to avoid potential stacking issues. - Refine padding values for a more balanced look.
- Use
text-indentinstead ofpadding-leftso that long values aren't truncated on the left when the cursor is at the end of the input.
- Use
- Refine how the inner shadows are applied so that they blend with the background outside of the component.
- Refine and normalise the look and feel of disabled and read-only states.
- Fix a Safari bug when the text value would appear tinted in the disabled input.
- Remove ellipsis truncation, as this prevented long values from being shown when scrolling on the input horizontally in Chrome.
- Improve autofill styles.
- Reset
ThemePanel- Disable transitions when changing the appearance.
- Improve contrast in the border radius preview.
Tooltip- Reduce border radius when theme setting is
radius="full". - [Breaking] Remove
multilineprop.- [Upgrade guide] If you were using
multilineprop, passstyle={{ maxWidth: 250 }}to the relevant Tooltip elements.
- [Upgrade guide] If you were using
- Reduce border radius when theme setting is
1.1.2
- Export
ThemePropsandThemePanelProps
1.1.1
- Export prop types for all components, resolving type errors with certain setups.
1.1.0
- Three new color scales:
ruby,iris, andjade - Set explicit versions of the Radix Primitives dependencies to allow stable builds.
- Use an explicit
React.FCtype forContextMenuSub,DialogRoot,HoverCardRoot, andPopoverRoot, resolving a type error with certain setups.
1.0.0
- Initial release! 🎉