Radix 主题版本发布及其变更日志。
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.Root
DialogTrigger
→ Dialog.Trigger
DialogContent
→ Dialog.Content
AlertDialog
Callout
ContextMenu
Dialog
DropdownMenu
HoverCard
Popover
RadioGroup
Select
Table
Tabs
TextField
@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
→ flexShrink
grow
→ 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
现在在内容部分默认具有 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
的 Card 实例。(没有额外样式的链接或按钮卡片的常见用例将按预期工作)。HoverCard
和 Popover
现在在内容部分默认具有 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-spacing
TextField
现在只有 2 个部分:Root
和 Slot
,删除了 Input
部分,并简化了属性的转发方式。
TextField.Root
的 TextField.Input
部分都应重命名为 TextField.Root
。TextField.Root
中使用的 TextField.Input
部分都应删除,并将它们的属性直接放在 TextField.Root
部分。TextField.Input
右侧的 TextField.Slot
部分都需要 side="right"
属性。但是,当在一个 TextField
中使用两个插槽时,例如一个插槽在左侧,另一个插槽在右侧,则不需要进行调整。在这种情况下,插槽将自动放置在不同的侧边。Theme
现在不再自动设置主体背景颜色。背景颜色现在默认由根 Theme
提供。CSS 变量 --color-page-background
已不再可用。
--color-background
,该变量在 .radix-themes
元素上可用。Tooltip
现在在内容部分默认具有 maxWidth="360px"
。
maxWidth
。@radix-ui/themes
导入入口点中删除组件属性定义和内部帮助程序,并将其从 @radix-ui/themes/props
和 @radix-ui/themes/helpers
导出,以便能够使用相同的技术在 Radix 主题之上构建您自己的组件库。tokens.css
、components.css
和 utilities.css
文件,以防您需要对 CSS 优先级进行精细控制。例如,这允许在您自己的 CSS 之后导入 Radix 主题的 utilities.css
,以及在此之前导入其他所有内容。tokens.css
,您还可以导入 tokens/base.css
和 tokens/colors/*.css
,其中 *
对应于项目中所需的强调色和灰色名称。layout.css
。还提供了单独的导出 layout/tokens.css
、layout/components.css
和 layout/utilities.css
来支持上述用例。minWidth
、maxWidth
minHeight
、maxHeight
flexBasis
、flexShrink
、flexGrow
gridColumn
、gridColumnStart
、gridColumnEnd
gridRow
、gridRowStart
、gridRowEnd
overflow
、overflowX
、overflowY
width
、minWidth
、maxWidth
height
、minHeight
、maxHeight
m
、mx
、my
、mt
、mr
、mb
、ml
p
、px
、py
、pt
、pr
、pb
、pl
inset
、top
、right
、bottom
、left
gap
、gapX
、gapY
flexBasis
、flexShrink
、flexGrow
gridColumn
、gridColumnStart
、gridColumnEnd
gridRow
、gridRowStart
、gridRowEnd
width
和 height
属性不再映射到间距比例。这是因为在绝大多数情况下,宽度和高度都没有设置为间距比例,因此,将间距比例作为 IDE 自动完成建议会显得奇怪/误导。shrink
和 grow
属性重命名为 flexShrink
和 flexGrow
"auto"
或 "100vw"
)仍然可以通过手动字符串值使用。initial
键的断点对象时,响应式属性不会应用默认属性值的问题。color
、defaultValue
和 defaultChecked
属性,以避免与自定义实现混淆。asChild
属性的可用性。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-box
。DataList
根
项目
标签
值
CheckboxGroup
根
项目
CheckboxCards
根
项目
Progress
Radio
RadioCards
根
项目
Reset
SegmentedControl
Skeleton
loading
属性有条件地渲染自身或 React 片段。Spinner
Skeleton
类似,它也可以包装任何 UI 元素,并使用条件 loading
属性显示自身。TabNav
Tabs
,但用于页面导航。呈现常规链接并支持轮流焦点。部件
根
Link
AlertDialog
、Dialog
position: relative
以支持绝对定位的子元素。width
、minWidth
、maxWidth
属性。maxWidth="600px"
。Badge
user-select: none
size="3"
,使 size="2"
更小,调整 size="1"
尺寸。Blockquote
、Code
、Em
、Heading
、Quote
、Link
、Strong
、Text
wrap
和 truncate
属性,用于控制文本是否换行以及是否使用省略号截断。Card
Code
variant="ghost"
颜色现在的工作方式类似于 Text,继承颜色,除非使用 color
属性显式设置。Container
align
属性来控制容器内容的对齐方式,可以是左对齐、居中对齐或右对齐。display="block"
的值更改为 display="initial"
(之前的值存在问题)。ContextMenu
、DropdownMenu
CheckboxItem
和 RadioItem
组件中添加 color
属性。Checkbox
、RadioGroup
、Switch
DropdownMenu
variant="soft"
时,高亮项使用更亮的文本颜色。TriggerIcon
部分,用于渲染一个向下箭头指示器。Box
、Flex
、Grid
as
属性的支持,可以渲染为 span
或 div
。display: block
样式。Button
、IconButton
loading
属性。Flex
gapX
和 gapY
属性。HoverCard
、Popover
position: relative
以支持绝对定位的子元素。width
、minWidth
、maxWidth
、height
、minHeight
、maxHeight
属性。maxWidth="480px"
。RadioGroup
children
传递给 Item
部分时显示可选的文本标签,并且 Root
部分现在提供 flex column 样式和间距。Section
display="block"
的值更改为 display="initial"
(之前的值存在问题)。size="3"
使用新的值,size="4"
使用之前的值。Select
<label>
元素。Separator
orientation
属性使用响应式值。ScrollArea
Slider
flex-grow: 1
和 width: stretch
/ height: stretch
替换 flex-shrink: 0
,以便滑块元素在布局中更直观地进行伸缩和收缩。Table
layout
属性来控制 table-layout
样式属性。TableCell
部分的 width
属性的类型签名和实现与布局组件中重新设计的 width
属性对齐。TableCell
部分添加 minWidth
和 maxWidth
属性。Tabs
:
TabsList
中添加 color
和 highContrast
属性。TabsList
和 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-spacing
TextArea
radius
属性。resize
属性。<label>
元素。TextField
Input
部分以简化属性的转发方式,并重新设计内部 HTML 结构和样式。type
不支持 getSelectionRange
的问题。<label>
元素。ThemePanel
主题
Theme
组件上设置 min-height: 100vh
。hasBackground
属性值无效的问题。Theme
默认具有背景颜色的逻辑。没有显式 hasBackground
属性的 Theme
将显示背景颜色。
Theme
组件时。<Theme apperance="light">
或 <Theme apperance="dark">
。Theme
提供。
--color-page-background
不再可用。html
上的 suppressHydrationWarning
不再需要(除非其他库需要,例如 next-themes
)。Tooltip
width
、minWidth
、maxWidth
属性。maxWidth="360px"
。Card
variant="surface"
边框颜色可能在不支持 color-mix
的浏览器中消失的问题。variant="surface"
边框颜色。Code
Link
中使用 variant="ghost"
时,确保 Link
上的 underline="hover"
被尊重。TextField
0,1,0
,伪元素样式为 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
组件上强制亮/暗外观也会设置相应的浏览器颜色,例如正确的输入自动填充背景颜色。@keyframes
动画重命名为以 rt-
为前缀并转换为短横线连接命名法。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
、IconButton
asChild
一起使用 disabled
时,将禁用样式应用于其他元素。variant="classic"
在不同强调色和亮/暗模式下的外观。Callout
Callout.Root
中嵌套多个 Callout.Text
元素。Callout.Root
碰巧提供的弹性属性,请更改你的布局以显式使用 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-bottom
DropdownMenu
, ContextMenu
radius="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-right
Slider
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-spacing
Text
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
和 ThemePanelProps
ruby
、iris
和 jade
。ContextMenuSub
、DialogRoot
、HoverCardRoot
和 PopoverRoot
使用显式的 React.FC
类型,从而解决某些设置下的类型错误。