Radix Themes 的发布版本及其更新日志。
Checkbox 组件的不确定状态指示器Grid 组件添加 areas 属性,并为所有布局组件(Box、Container、Flex、Grid、Section)添加 gridArea 属性DataList 组件添加 overflow-wrap: anywhere 样式,以便长值(例如 ID)可以换行Checkbox 组件的不确定状态指示器AlertDialog.Content 和 Dialog.Content 添加 align、height、minHeight 和 maxHeight 属性max 属性grayColor 设置在与显式的 appearance="light" 或 appearance="dark" 值组合使用时无效的问题color 值时,Link 会自动使用高对比度颜色的回归问题。Link 嵌套在灰色文本中时,不会使用正确的文本选择和焦点颜色的回归问题。Link 点击高亮样式CheckboxGroup.Item 和 RadioGroup.Item,以便可以实现文本溢出截断的布局data-accent-color 属性,因为它在那里没有实际效果。color 属性定义的内部结构。TextField 和 TextArea 的自动填充和禁用颜色Spinner 组件添加了一个内部的 --spinner-animation-duration CSS 变量Link 嵌套在彩色文本中时,不会自动使用高对比度颜色的回归问题。Link 渲染为 button 时,不显示悬停样式的回归问题TextArea 在 Firefox 中不保留空格序列的回归问题size="1" 指示器复选标记对齐问题Radix Themes 3.0 带来了新的布局引擎、11 个新组件和完整的 ESM 支持。阅读公告。
此版本引入了一些破坏性更改。请按照以下步骤进行升级。
DialogRoot → Dialog.RootDialogTrigger → Dialog.TriggerDialogContent → Dialog.ContentAlertDialogCalloutContextMenuDialogDropdownMenuHoverCardPopoverRadioGroupSelectTableTabsTextField@radix-ui/themes 导入入口点获得。
@radix-ui/themes/props 和 @radix-ui/themes/helpers 导入它们。width 和 height 属性不再映射到空间比例。请查找并替换您的 width 和 height 属性用法,并使用相应的 空间比例 步骤
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"height 也依此类推var(--space-1) 到 var(--space-9) 代替硬编码值。shrink 和 grow 属性已重命名
shrink → flexShrinkgrow → flexGrow如果您为自定义组件使用了以下令牌,请确保替换相应的引用。
--color-surface-accent → --accent-surface--accent-9-contrast → --accent-contrast--red-9-contrast → --red-contrast--pink-9-contrast → --pink-contrast--blue-9-contrast → --blue-contrast--color-autofill-root → --focus-a3--color-focus-root → --focus-8--color-selection-root → --focus-a5--gray-2-translucent 和相应的淡灰色颜色已移除。
--color-panel-translucent 并结合背景模糊滤镜。AlertDialog, Dialog 现在在 Content 部分默认具有 maxWidth="600px"。
580px 值稍大。如果您使用的对话框需要不同的宽度,请使用您自己的值覆盖 maxWidth。Badge 有一个新的 size="3",size="2" 现在小得多,并且 size="1" 尺寸已调整
size="2" 用法替换为 size="3"Card 内部 HTML 结构和样式已重构,现在渲染单个 HTML 节点。如果您依赖于任何实现怪癖来覆盖样式或行为,请确保您的代码按预期工作。
ghost 以外的变体上覆盖 Card 的背景颜色,请使用 --card-background-color 变量,而不是直接分配 background-color,或者在嵌套为 Card 第一个子元素的 <Inset p="current"> 元素上设置背景颜色。asChild 或由父组件 asChild'ed 的 Card 实例。(链接或按钮卡片没有任何额外样式的常见情况将按预期工作)。HoverCard 和 Popover 现在在 Content 部分默认具有 maxWidth="480px"。
maxWidth。RadioGroup 内部 HTML 结构和样式已重构,现在设计为在将 children 传递给 Item 部分时显示可选的文本标签。Root 部分现在还提供 flex 列样式和间距。
Radio 组件代替Section 有一个新的 size="3"size="3" 的 Section 更新为 size="4"Tabs 底层的字母/单词间距 CSS 变量已重命名,以支持 Tabs 和 TabNav 组件。如果您正在使用它们,请将它们重命名为新值
--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-spacingTextField 现在只有 2 个部分:Root 和 Slot,删除了 Input 部分,并简化了属性的转发方式。
TextField.Root 使用的 TextField.Input 部分应重命名为 TextField.RootTextField.Root 中使用的 TextField.Input 部分应删除,其属性应直接放在 TextField.Root 部分上TextField.Input 右侧的 TextField.Slot 部分将需要 side="right" 属性。但是,当在一个 TextField 中使用两个插槽时,例如左侧一个插槽,右侧另一个插槽,则无需调整。在这种情况下,插槽将自动放置在不同的侧面。Theme 不再自动设置 body 背景颜色。背景颜色现在默认由根 Theme 提供。CSS 变量 --color-page-background 不再可用。
.radix-themes 元素上可用的 --color-background。Tooltip 现在在 Content 部分默认具有 maxWidth="360px"。
maxWidth。@radix-ui/themes 导入入口点中移除组件 prop 定义和内部 helpers,并将它们从 @radix-ui/themes/props 和 @radix-ui/themes/helpers 导出,以便可以使用相同的技术在 Radix Themes 之上构建您自己的组件库。tokens.css、components.css 和 utilities.css 文件,以防您需要对 CSS 优先级进行细粒度控制。例如,这允许在您自己的 CSS 之后导入 Radix Themes 的 utilities.css,以及在此之前导入所有其他内容。tokens.css 之外,您还可以导入 tokens/base.css 和 tokens/colors/*.css,其中 * 对应于您的项目中需要的强调色和灰色名称。layout.css。还提供单独的导出 layout/tokens.css、layout/components.css 和 layout/utilities.css 以支持上述用例。minWidth、maxWidthminHeight、maxHeightflexBasis、flexShrink、flexGrowgridColumn、gridColumnStart、gridColumnEndgridRow、gridRowStart、gridRowEndoverflow、overflowX、overflowYwidth、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、gridRowEndwidth 和 height props 不再映射到空间比例。这是因为在绝大多数情况下,width 和 height 未设置为空间比例,因此,空间比例作为 IDE 自动完成建议感觉奇怪/具有误导性。shrink 和 grow props 重命名为 flexShrink 和 flexGrow"auto" 或 "100vw")仍然可以作为手动字符串值使用。initial 键的断点对象时,响应式 props 不会应用默认 prop 值的问题color、defaultValue 和 defaultChecked 属性,以避免与其自定义实现混淆asChild prop 的可用性highContrast 文本颜色在嵌套在接受强调色的其他组件中时一致地工作variant="soft" 菜单项的背景颜色--color-surface-accent 重命名为 --accent-surface--accent-9-contrast、--red-9-contrast、--pink-9-contrast、--blue-9-contrast 等为 --accent-contrast、--red-contrast、--pink-contrast、--blue-contrast 等等。--gray-2-translucent 和相应的淡灰色--color-surface 和 --color-panel-translucent 值--color-focus-root、--color-selection-root、--color-autofill-root 替换为焦点颜色比例,例如 --focus-1 – --focus-12 和 --focus-a1 – --focus-a12。box-sizing: border-boxDataList
RootItemLabelValueCheckboxGroup
RootItemCheckboxCards
RootItemProgress
Radio
RadioCards
RootItemReset
SegmentedControl
Skeleton
loading prop 有条件地渲染自身或 React Fragment。Spinner
Skeleton 类似,它也可以包裹任何 UI 元素,并使用条件 loading prop 显示自身。TabNav
Tabs 等效,但用于页面导航。渲染常规链接并支持漫游焦点。部件
RootLinkAlertDialog, Dialogposition: relative 以支持绝对定位的子元素。width、minWidth、maxWidth props。maxWidth="600px"。Badge
user-select: nonesize="3",使 size="2" 更小,调整 size="1" 尺寸Blockquote, Code, Em, Heading, Quote, Link, Strong, Textwrap 和 truncate props,用于控制文本是否换行以及是否使用省略号截断Card
Code
variant="ghost" 颜色现在的工作方式与 Text 类似,除非使用 color prop 显式设置,否则会继承颜色Container
align prop 以控制容器内容是左对齐、居中对齐还是右对齐display="block" 值更改为 display="initial"(前一个值已损坏)ContextMenu, DropdownMenuCheckboxItem 和 RadioItem 部件添加 color propCheckbox, RadioGroup, SwitchDropdownMenu
variant="soft" 时,为突出显示的项目使用更亮的文本颜色TriggerIcon 部件,用于渲染向下箭头指示器Box, Flex, Gridas prop 的支持,以渲染为 span 或 divdisplay: block 样式Button, IconButtonloading propFlex
gapX 和 gapY propsHoverCard, Popoverposition: relative 以支持绝对定位的子元素。width、minWidth、maxWidth、height、minHeight、maxHeight props。maxWidth="480px"。RadioGroup
children 传递给 Item 部件时显示可选的文本标签,并且 Root 部件现在提供 flex 列样式和间距。Section
display="block" 值更改为 display="initial"(前一个值已损坏)size="3" 使用新值,对 size="4" 使用先前的值Select
<label> 元素继承Separator
orientation prop 的响应式值ScrollArea
Slider
flex-shrink: 0 替换为 flex-grow: 1 和 width: stretch / height: stretch,以允许滑块元素在布局中更直观地伸缩。Table
layout prop 以控制 table-layout 样式属性TableCell 部件上的 width prop 类型签名和实现与布局组件上重做的 width prop 对齐TableCell 部件添加 minWidth 和 maxWidth propsTabs:
TabsList 添加 color 和 highContrast propsTabsList 和 TabsContent.radix-themes 中的字母/单词间距 CSS 变量,以便它同时支持 Tabs 和 TabNav 组件。
--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-spacingTextArea
radius propresize prop<label> 元素继承TextField
Input 部件以简化 props 的转发方式,并重做内部 HTML 结构和样式。type 不支持 getSelectionRange 的问题<label> 元素继承ThemePanel
主题
Theme 组件上设置 min-height: 100vhhasBackground prop 值不起作用的问题Theme 默认具有背景颜色的逻辑。Theme 在没有显式 hasBackground prop 的情况下将显示背景颜色
Theme 组件时<Theme apperance="light"> 或 <Theme apperance="dark">Theme 提供。
--color-page-background 不再可用。html 上的 suppressHydrationWarning 不再需要(除非其他库需要,例如 next-themes)Tooltip
width、minWidth、maxWidth props。maxWidth="360px"Card
color-mix 的浏览器中,variant="surface" 边框颜色可能会消失的问题。variant="surface" 边框颜色。Code
Link 中使用 variant="ghost" 时,确保 Link 上的 underline="hover" 得到尊重。TextField
0,1,0 以用于样式化 HTML 元素,以及 0,1,1 以用于样式化伪元素,从而提高与 Tailwind 的兼容性。
--black-a1、--white-a1 等),请务必检查新值并更新所使用的步骤,以使您的设计看起来符合预期
--black-a1 更改为 rgba(0, 0, 0, 0.01)。--black-a2 更改为 rgba(0, 0, 0, 0.024)。--black-a3 更改为 --black-a1。--black-a4 更改为 --black-a2。--black-a5 更改为 --black-a2。--black-a6 更改为 --black-a3。--black-a7 更改为 --black-a3 或 --black-a4。--black-a8 更改为 --black-a5。--black-a9 更改为 --black-a6 或 --black-a7。--black-a10 更改为 --black-a7。--black-a11 更改为 --black-a8。--black-a12 更改为 --black-a11。--white-a1 更改为 transparent。--white-a2 更改为 rgba(255, 255, 255, 0.01)。--white-a3 更改为 --white-a1 或 --white-a2。--white-a4 更改为 --white-a2。--white-a5 更改为 --white-a3。--white-a6 更改为 --white-a3 或 --white-a4。--white-a7 更改为 --white-a4。--white-a8 更改为 --white-a5。--white-a9 为 --white-a6。--white-a10 为 --white-a7。--white-a11 为 --white-a9。--white-a12 为 --white-a11 或 --white-a12。color="gray" 组件上,为焦点环保持主题强调色,类似于文本选择颜色。Theme 组件上的强制浅色/深色外观也设置了相应的浏览器颜色,例如正确的输入自动填充背景颜色。rt- 前缀的 @keyframes 动画重命名为 kebab case 形式。outline 而不是 box-shadow,这避免了 Chrome 浏览器中聚焦元素上轻微的反锯齿问题。AlertDialog, Dialog头像
svg 资源作为回退,请确保手动设置适当的大小。--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;.rt-reset-button 和 .rt-reset-a 类替换为单个 .rt-reset 类。
.rt-reset 类可用于在构建自定义组件时重置 a、button、h1、h2、h3、h4、h5、h6、ol、ul、p 和 pre 标签。引用
trim 属性。Button, IconButtondisabled 与 asChild 一起使用时,将禁用样式应用于其他元素variant="classic" 的外观和感觉。Callout
Callout.Root 中嵌套多个 Callout.Text 元素Callout.Root 碰巧提供的 flex 属性,请更改您的布局以显式使用 Flex 组件。color 属性,否则提示框会继承文本颜色。
highContrast 属性传递给您的提示框,以使文本更深色。variant="surface" 使用灰色背景。variant="outline" 使用更深的轮廓颜色。复选框
Text 组件中包装复选框时,自动将复选框与文本的第一行对齐。
<Text as="label" size="..."> 中,并使用您喜欢的文本大小。size="1",将默认尺寸更改为 size="2",添加更精细的 size="3"size 属性使用 size="1" 或 size="2" 复选框,请将它们分别重命名为 size="2" 和 size="3"。variant="classic" 的外观和感觉。Card
variant="classic" 阴影,使其不会延伸到元素外部。variant="classic" 的悬停和按下样式。Code
Code 在 Link 中时,添加交互样式。variant="ghost" 字体大小会不一致,具体取决于大小是基于父 Text 元素还是来自代码自身的 size 属性。variant="outline" 和 variant="surface",根据字体大小缩放轮廓粗细。variant="solid" 的 ::selection 背景颜色。.radix-themes 中添加 CSS 变量,用于自定义 Code 变体的内边距,以防默认值与自定义代码字体的垂直度量不兼容。
--code-padding-top--code-padding-bottomDropdownMenu、ContextMenuradius="full" 时,减小边框半径。Grid
Grid 组件可能导致后代 Grid 意外继承某些父级样式的错误。Inset
clip 属性以控制内容是裁剪到父元素的内边距还是边框。Table 在 Inset 内部时,自动调整表格单元格内边距Kbd
Link
Heading 元素内自动高对比度(类似于 Text 内的自动高对比度)。variant="outline" 和 variant="surface",根据字体大小缩放下划线粗细。RadioGroup
Text 组件中包装单选按钮时,自动将单选按钮与文本的第一行对齐。
<Text as="label" size="..."> 中,并使用您喜欢的文本大小。size="1",将默认尺寸更改为 size="2",添加更精细的 size="3"。
size 属性使用 size="1" 或 size="2" 单选按钮,请将它们分别重命名为 size="2" 和 size="3"。variant="classic" 的外观和感觉。Select
variant="classic" 的外观和感觉。position="popper" 时,将 SelectContent 对齐到触发器的左侧。size="3"。ScrollArea
.radix-themes 上声明它们,以方便更轻松地调整滚动条位置。
--scrollarea-scrollbar-margin-top、--scrollarea-scrollbar-margin-left 等,请确保它们遵循新名称并在适当的级别设置。不再需要以 .rt-ScrollAreaScrollbar 元素为目标来设置变量,因为它们可以仅在需要覆盖的组件上设置。新变量
--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-rightSlider
Switch
Switch 组件中包装开关时,自动将开关与文本的第一行对齐。
<Text as="label" size="..."> 中,并使用您喜欢的文本大小。size="2" 和 size="3" 更小。
size="3" 而不是 size="2" 以匹配之前的外观。Table
Tabs
.radix-themes 中添加 CSS 变量,用于自定义活动和非活动选项卡的字母间距和单词间距,以便在默认值不适用于您的自定义字体时,您可以最大限度地减少明显的粗细变化。
--tabs-trigger-active-letter-spacing--tabs-trigger-active-word-spacing--tabs-trigger-inactive-letter-spacing--tabs-trigger-inactive-word-spacingText
as 属性添加 as="label" 选项。as 属性时属性类型如何解析。TextArea
TextArea 的行为类似于真正的 display: block 元素,水平填充可用空间。style 和 className 现在被转发到包装 div 元素。 ref 和其他属性仍然转发到 textarea 本身。style、className 或以相关 HTML 节点为目标的自定义 CSS 覆盖 TextArea 样式,请确保您的自定义样式按预期工作。TextArea 的固有宽度,请确保您的布局看起来符合预期。TextArea 溢出时,使用匹配的滚动边距以获得更好的打字体验。TextField
z-index 以避免潜在的堆叠问题。text-indent 而不是 padding-left,以便当光标位于输入框末尾时,长值不会在左侧被截断。ThemePanel
Tooltip
radius="full" 时,减小边框半径。multiline 属性。
multiline 属性,请将 style={{ maxWidth: 250 }} 传递给相关的 Tooltip 元素。ThemeProps 和 ThemePanelPropsruby、iris 和 jadeContextMenuSub、DialogRoot、HoverCardRoot 和 PopoverRoot 使用显式的 React.FC 类型,解决某些设置中的类型错误。