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.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
现在在 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-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
不再自动设置 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
、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
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-box
DataList
Root
Item
Label
Value
CheckboxGroup
Root
Item
CheckboxCards
Root
Item
Progress
Radio
RadioCards
Root
Item
Reset
SegmentedControl
Skeleton
loading
prop 有条件地渲染自身或 React Fragment。Spinner
Skeleton
类似,它也可以包裹任何 UI 元素,并使用条件 loading
prop 显示自身。TabNav
Tabs
等效,但用于页面导航。渲染常规链接并支持漫游焦点。部件
Root
Link
AlertDialog
, Dialog
position: relative
以支持绝对定位的子元素。width
、minWidth
、maxWidth
props。maxWidth="600px"
。Badge
user-select: none
size="3"
,使 size="2"
更小,调整 size="1"
尺寸Blockquote
, Code
, Em
, Heading
, Quote
, Link
, Strong
, Text
wrap
和 truncate
props,用于控制文本是否换行以及是否使用省略号截断Card
Code
variant="ghost"
颜色现在的工作方式与 Text 类似,除非使用 color
prop 显式设置,否则会继承颜色Container
align
prop 以控制容器内容是左对齐、居中对齐还是右对齐display="block"
值更改为 display="initial"
(前一个值已损坏)ContextMenu
, DropdownMenu
CheckboxItem
和 RadioItem
部件添加 color
propCheckbox
, RadioGroup
, Switch
DropdownMenu
variant="soft"
时,为突出显示的项目使用更亮的文本颜色TriggerIcon
部件,用于渲染向下箭头指示器Box
, Flex
, Grid
as
prop 的支持,以渲染为 span
或 div
display: block
样式Button
, IconButton
loading
propFlex
gapX
和 gapY
propsHoverCard
, Popover
position: 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-spacing
TextArea
radius
propresize
prop<label>
元素继承TextField
Input
部件以简化 props 的转发方式,并重做内部 HTML 结构和样式。type
不支持 getSelectionRange
的问题<label>
元素继承ThemePanel
主题
Theme
组件上设置 min-height: 100vh
hasBackground
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
, IconButton
disabled
与 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-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
类型,解决某些设置中的类型错误。