From 1958fd368622464cf90649501b2e7743a6a8fc48 Mon Sep 17 00:00:00 2001 From: kurihada Date: Fri, 20 Mar 2026 11:39:11 +0800 Subject: [PATCH] Extend skin-aware styles across the component library --- docs/rfcs/multi-style-architecture.md | 9 +++++---- packages/ui/src/components/alert.variants.ts | 10 +++++----- packages/ui/src/components/avatar.variants.ts | 12 ++++++------ packages/ui/src/components/badge.variants.ts | 6 +++--- .../ui/src/components/checkbox.variants.ts | 3 ++- .../ui/src/components/combobox.variants.ts | 14 ++++++++------ .../ui/src/components/command.variants.ts | 10 +++++----- .../ui/src/components/data-table.variants.ts | 19 +++++++++---------- .../src/components/dropdown-menu.variants.ts | 7 ++++--- .../ui/src/components/empty-state.variants.ts | 14 +++++++------- .../ui/src/components/popover.variants.ts | 3 ++- .../ui/src/components/radio-group.variants.ts | 3 ++- packages/ui/src/components/select.variants.ts | 12 +++++++----- packages/ui/src/components/sheet.tsx | 2 +- packages/ui/src/components/sheet.variants.ts | 9 +++++---- packages/ui/src/components/tabs.variants.ts | 8 ++++---- .../ui/src/components/textarea.variants.ts | 9 +++++---- packages/ui/src/components/toast.variants.ts | 18 +++++++++--------- 18 files changed, 89 insertions(+), 79 deletions(-) diff --git a/docs/rfcs/multi-style-architecture.md b/docs/rfcs/multi-style-architecture.md index 9ccc80c..338a52f 100644 --- a/docs/rfcs/multi-style-architecture.md +++ b/docs/rfcs/multi-style-architecture.md @@ -529,7 +529,7 @@ Priority order: Status: -- not started +- completed ### Phase 5: Packaging and Consumer Ergonomics @@ -607,7 +607,8 @@ As of 2026-03-20, the project is at this point: and `Skeleton` - screenshot-friendly validation surface added in `Foundation/Style Matrix` - scoped `data-motion="reduced"` now works for nested docs wrappers -- broader component-library rollout still pending +- shared skin-aware treatment now extends across the broader component library surface, + including controls, menus, overlays, feedback, and data-heavy patterns -The next implementation task should be Phase 4: expand the skin-aware pattern across the -broader component library. +The next implementation task should be Phase 5: improve packaging and consumer +ergonomics for style consumption. diff --git a/packages/ui/src/components/alert.variants.ts b/packages/ui/src/components/alert.variants.ts index f778e79..e948f76 100644 --- a/packages/ui/src/components/alert.variants.ts +++ b/packages/ui/src/components/alert.variants.ts @@ -3,7 +3,7 @@ import { getMotionRecipeClassNames } from "../lib/motion"; export const alertVariants = cva( [ - "relative grid gap-x-3 gap-y-1 rounded-[var(--radius-lg)] border p-4 shadow-[var(--shadow-xs)]", + "relative grid gap-x-3 gap-y-1 rounded-[var(--ui-card-radius)] border p-4 shadow-[var(--ui-card-subtle-shadow)] [border-width:var(--ui-card-border-width)]", "text-[var(--color-foreground)]", getMotionRecipeClassNames("transition", "ring") ], @@ -11,13 +11,13 @@ export const alertVariants = cva( variants: { variant: { default: - "border-[var(--color-border)] bg-[var(--color-card)]", + "border-[var(--ui-card-default-border)] bg-[var(--ui-card-default-bg)]", success: - "border-[color-mix(in_oklch,var(--color-success)_34%,var(--color-border))] bg-[color-mix(in_oklch,var(--color-success)_10%,var(--color-card))]", + "border-[color-mix(in_oklch,var(--color-success)_34%,var(--ui-card-default-border))] bg-[color-mix(in_oklch,var(--color-success)_10%,var(--ui-card-default-bg))]", warning: - "border-[color-mix(in_oklch,var(--color-warning)_34%,var(--color-border))] bg-[color-mix(in_oklch,var(--color-warning)_12%,var(--color-card))]", + "border-[color-mix(in_oklch,var(--color-warning)_34%,var(--ui-card-default-border))] bg-[color-mix(in_oklch,var(--color-warning)_12%,var(--ui-card-default-bg))]", destructive: - "border-[color-mix(in_oklch,var(--color-destructive)_38%,var(--color-border))] bg-[color-mix(in_oklch,var(--color-destructive)_10%,var(--color-card))]" + "border-[color-mix(in_oklch,var(--color-destructive)_38%,var(--ui-card-default-border))] bg-[color-mix(in_oklch,var(--color-destructive)_10%,var(--ui-card-default-bg))]" }, hasIcon: { false: "", diff --git a/packages/ui/src/components/avatar.variants.ts b/packages/ui/src/components/avatar.variants.ts index c380dbf..5a61675 100644 --- a/packages/ui/src/components/avatar.variants.ts +++ b/packages/ui/src/components/avatar.variants.ts @@ -3,8 +3,8 @@ import { getMotionRecipeClassNames } from "../lib/motion"; export const avatarVariants = cva( [ - "relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden border shadow-[var(--shadow-xs)]", - "bg-[var(--color-card)] text-[var(--color-foreground)]", + "relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden border shadow-[var(--ui-control-shadow)]", + "bg-[var(--ui-control-bg)] text-[var(--color-foreground)] [border-width:var(--ui-input-border-width)]", getMotionRecipeClassNames("transition", "ring") ], { @@ -17,13 +17,13 @@ export const avatarVariants = cva( }, shape: { circle: "rounded-full", - rounded: "rounded-[var(--radius-md)]" + rounded: "rounded-[var(--ui-control-radius)]" }, tone: { - default: "border-[var(--color-border)] bg-[var(--color-card)]", - subtle: "border-[var(--color-border)] bg-[var(--color-surface)]", + default: "border-[var(--ui-control-border)] bg-[var(--ui-control-bg)]", + subtle: "border-[var(--ui-card-subtle-border)] bg-[var(--ui-card-subtle-bg)]", accent: - "border-[color-mix(in_oklch,var(--color-accent)_28%,var(--color-border))] bg-[color-mix(in_oklch,var(--color-accent)_14%,var(--color-card))]" + "border-[color-mix(in_oklch,var(--color-accent)_28%,var(--ui-control-border))] bg-[color-mix(in_oklch,var(--color-accent)_14%,var(--ui-control-bg))]" } }, defaultVariants: { diff --git a/packages/ui/src/components/badge.variants.ts b/packages/ui/src/components/badge.variants.ts index c67c98f..4a755d5 100644 --- a/packages/ui/src/components/badge.variants.ts +++ b/packages/ui/src/components/badge.variants.ts @@ -3,7 +3,7 @@ import { getMotionRecipeClassNames } from "../lib/motion"; export const badgeVariants = cva( [ - "inline-flex shrink-0 items-center justify-center gap-1 whitespace-nowrap rounded-[var(--radius-full)] border font-medium", + "inline-flex shrink-0 items-center justify-center gap-1 whitespace-nowrap rounded-[var(--ui-control-radius)] border font-medium [border-width:var(--ui-input-border-width)]", "outline-none select-none", getMotionRecipeClassNames("transition", "ring") ], @@ -15,11 +15,11 @@ export const badgeVariants = cva( }, variant: { subtle: - "border-[var(--color-border)] bg-[var(--color-card)] text-[var(--color-foreground)]", + "border-[var(--ui-control-border)] bg-[var(--ui-control-bg)] text-[var(--color-foreground)] shadow-[var(--ui-control-shadow)]", solid: "border-transparent bg-[var(--color-foreground)] text-[var(--color-background)]", outline: - "border-[var(--color-border-strong)] bg-transparent text-[var(--color-foreground)]" + "border-[var(--ui-control-border)] bg-transparent text-[var(--color-foreground)]" }, tone: { neutral: "", diff --git a/packages/ui/src/components/checkbox.variants.ts b/packages/ui/src/components/checkbox.variants.ts index 967aa01..d6d88bc 100644 --- a/packages/ui/src/components/checkbox.variants.ts +++ b/packages/ui/src/components/checkbox.variants.ts @@ -3,7 +3,8 @@ import { getMotionRecipeClassNames } from "../lib/motion"; export const checkboxVariants = cva( [ - "inline-flex size-5 shrink-0 items-center justify-center rounded-[calc(var(--radius-sm)-4px)] border border-[var(--color-border-strong)] bg-[var(--color-card)] shadow-[var(--shadow-xs)] outline-none", + "inline-flex size-5 shrink-0 items-center justify-center rounded-[var(--ui-control-radius)] border bg-[var(--ui-control-bg)] shadow-[var(--ui-control-shadow)] outline-none", + "[border-width:var(--ui-input-border-width)] border-[var(--ui-control-border)]", "text-[var(--color-primary-foreground)] transition-[background-color,border-color,box-shadow,transform] duration-[var(--dur-fast)] ease-[var(--ease-standard)]", "focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-background)]", "data-[state=checked]:border-[var(--color-primary)] data-[state=checked]:bg-[var(--color-primary)]", diff --git a/packages/ui/src/components/combobox.variants.ts b/packages/ui/src/components/combobox.variants.ts index 8b3bc6b..db2df25 100644 --- a/packages/ui/src/components/combobox.variants.ts +++ b/packages/ui/src/components/combobox.variants.ts @@ -3,9 +3,10 @@ import { getMotionRecipeClassNames } from "../lib/motion"; export const comboboxTriggerVariants = cva( [ - "inline-flex h-11 w-full items-center justify-between gap-3 rounded-[var(--radius-md)] border border-[var(--color-input)] bg-[var(--color-card)] px-4 text-left text-sm text-[var(--color-foreground)] shadow-[var(--shadow-xs)] outline-none", + "inline-flex h-11 w-full items-center justify-between gap-3 rounded-[var(--ui-input-radius)] border bg-[var(--ui-input-bg)] px-4 text-left text-sm text-[var(--ui-input-fg)] shadow-[var(--ui-input-shadow)] outline-none", + "[border-width:var(--ui-input-border-width)] border-[var(--ui-input-border)] backdrop-blur-[var(--ui-input-backdrop-blur)]", "focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-background)]", - "data-[placeholder]:text-[var(--color-muted-foreground)] data-[disabled]:cursor-not-allowed data-[disabled]:bg-[var(--color-surface)] data-[disabled]:text-[var(--color-muted-foreground)] data-[disabled]:opacity-100", + "data-[placeholder]:text-[var(--color-muted-foreground)] data-[disabled]:cursor-not-allowed data-[disabled]:bg-[var(--ui-input-disabled-bg)] data-[disabled]:text-[var(--color-muted-foreground)] data-[disabled]:opacity-100", "aria-[invalid=true]:border-[color-mix(in_oklch,var(--color-destructive)_42%,var(--color-border-strong))]", "aria-[invalid=true]:shadow-[0_0_0_1px_color-mix(in_oklch,var(--color-destructive)_28%,transparent)]", getMotionRecipeClassNames("ring") @@ -13,12 +14,13 @@ export const comboboxTriggerVariants = cva( ); export const comboboxContentVariants = cva([ - "relative z-50 min-w-[var(--radix-popover-trigger-width)] overflow-hidden rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-card)] p-0 text-[var(--color-card-foreground)] shadow-[var(--shadow-md)] outline-none", + "relative z-50 min-w-[var(--radix-popover-trigger-width)] overflow-hidden rounded-[var(--ui-panel-radius)] border border-[var(--ui-panel-border)] bg-[var(--ui-panel-bg)] p-0 text-[var(--color-card-foreground)] shadow-[var(--ui-panel-shadow)] outline-none", + "[border-width:var(--ui-panel-border-width)] backdrop-blur-[var(--ui-panel-backdrop-blur)]", "data-[state=open]:motion-enter-rise data-[state=closed]:motion-exit-drop" ]); export const comboboxSearchVariants = cva([ - "h-11 w-full border-b border-[var(--color-border)] bg-transparent px-3.5 text-sm text-[var(--color-foreground)] outline-none", + "h-11 w-full border-b border-[var(--ui-panel-border)] bg-transparent px-3.5 text-sm text-[var(--color-foreground)] outline-none", "placeholder:text-[var(--color-muted-foreground)]" ]); @@ -35,9 +37,9 @@ export const comboboxLabelVariants = cva([ ]); export const comboboxItemVariants = cva([ - "relative flex w-full cursor-default select-none items-start gap-3 rounded-[calc(var(--radius-sm)-4px)] px-3 py-2 text-left text-sm text-[var(--color-foreground)] outline-none", + "relative flex w-full cursor-default select-none items-start gap-3 rounded-[var(--ui-control-radius)] px-3 py-2 text-left text-sm text-[var(--color-foreground)] outline-none", "transition-colors duration-[var(--dur-fast)] ease-[var(--ease-standard)]", - "data-[active=true]:bg-[var(--color-surface)] data-[selected=true]:bg-[color-mix(in_oklch,var(--color-primary)_10%,var(--color-card))]", + "data-[active=true]:bg-[var(--ui-control-bg)] data-[selected=true]:bg-[color-mix(in_oklch,var(--color-primary)_10%,var(--ui-panel-bg))]", "data-[selected=true]:text-[var(--color-foreground)] data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-45" ]); diff --git a/packages/ui/src/components/command.variants.ts b/packages/ui/src/components/command.variants.ts index ee7c4ad..7a0a07f 100644 --- a/packages/ui/src/components/command.variants.ts +++ b/packages/ui/src/components/command.variants.ts @@ -2,8 +2,8 @@ import { cva } from "../lib/cva"; import { getMotionRecipeClassNames } from "../lib/motion"; export const commandVariants = cva([ - "flex h-full w-full flex-col overflow-hidden rounded-[var(--radius-lg)] border border-[var(--color-border)]", - "bg-[var(--color-card)] text-[var(--color-card-foreground)] shadow-[var(--shadow-sm)]", + "flex h-full w-full flex-col overflow-hidden rounded-[var(--ui-panel-radius)] border border-[var(--ui-panel-border)]", + "bg-[var(--ui-panel-bg)] text-[var(--color-card-foreground)] shadow-[var(--ui-panel-shadow)] [border-width:var(--ui-panel-border-width)] backdrop-blur-[var(--ui-panel-backdrop-blur)]", getMotionRecipeClassNames("transition", "ring") ]); @@ -13,7 +13,7 @@ export const commandDialogContentVariants = cva([ ]); export const commandInputWrapperVariants = cva([ - "flex items-center gap-3 border-b border-[var(--color-border)] px-4" + "flex items-center gap-3 border-b border-[var(--ui-panel-border)] px-4" ]); export const commandInputVariants = cva([ @@ -38,9 +38,9 @@ export const commandGroupVariants = cva([ ]); export const commandItemVariants = cva([ - "relative flex cursor-default select-none items-center gap-3 rounded-[calc(var(--radius-sm)-4px)] px-3 py-2 text-sm outline-none", + "relative flex cursor-default select-none items-center gap-3 rounded-[var(--ui-control-radius)] px-3 py-2 text-sm outline-none", "text-[var(--color-foreground)] transition-colors duration-[var(--dur-fast)] ease-[var(--ease-standard)]", - "data-[selected=true]:bg-[var(--color-surface)] data-[selected=true]:text-[var(--color-foreground)]", + "data-[selected=true]:bg-[var(--ui-control-bg)] data-[selected=true]:text-[var(--color-foreground)]", "data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-45" ]); diff --git a/packages/ui/src/components/data-table.variants.ts b/packages/ui/src/components/data-table.variants.ts index de186f4..55a5eaf 100644 --- a/packages/ui/src/components/data-table.variants.ts +++ b/packages/ui/src/components/data-table.variants.ts @@ -9,8 +9,7 @@ export const dataTableToolbarVariants = cva( export const dataTableContentVariants = cva( [ - "overflow-hidden rounded-[var(--radius-lg)] border border-[var(--color-border)]", - "bg-[var(--color-card)] shadow-[var(--shadow-sm)]", + "overflow-hidden rounded-[var(--ui-card-radius)] border border-[var(--ui-card-default-border)] bg-[var(--ui-card-default-bg)] shadow-[var(--ui-card-default-shadow)] [border-width:var(--ui-card-border-width)]", getMotionRecipeClassNames("transition", "ring") ], { @@ -29,7 +28,7 @@ export const dataTableContentVariants = cva( export const dataTableTableVariants = cva("min-w-full border-collapse align-middle"); export const dataTableHeaderVariants = cva( - "bg-[color-mix(in_oklch,var(--color-surface)_74%,var(--color-card))]" + "bg-[color-mix(in_oklch,var(--ui-card-subtle-bg)_74%,var(--ui-card-default-bg))]" ); export const dataTableHeaderCellVariants = cva( @@ -60,18 +59,18 @@ export const dataTableBodyVariants = cva(""); export const dataTableRowVariants = cva( [ - "border-t border-[color-mix(in_oklch,var(--color-border)_88%,transparent)]", + "border-t border-[color-mix(in_oklch,var(--ui-card-default-border)_88%,transparent)]", "transition-colors duration-200" ], { variants: { interactive: { false: "", - true: "hover:bg-[color-mix(in_oklch,var(--color-surface)_72%,var(--color-card))]" + true: "hover:bg-[color-mix(in_oklch,var(--ui-card-subtle-bg)_72%,var(--ui-card-default-bg))]" }, selected: { false: "", - true: "bg-[color-mix(in_oklch,var(--color-primary)_8%,var(--color-card))]" + true: "bg-[color-mix(in_oklch,var(--color-primary)_8%,var(--ui-card-default-bg))]" } }, defaultVariants: { @@ -107,10 +106,10 @@ export const dataTablePaginationVariants = cva( export const dataTableSelectionBarVariants = cva( [ - "flex flex-wrap items-center justify-between gap-3 rounded-[var(--radius-md)]", - "border border-[color-mix(in_oklch,var(--color-primary)_24%,var(--color-border))]", - "bg-[color-mix(in_oklch,var(--color-primary)_7%,var(--color-card))] px-4 py-3", - "shadow-[var(--shadow-xs)]" + "flex flex-wrap items-center justify-between gap-3 rounded-[var(--ui-card-radius)]", + "border border-[color-mix(in_oklch,var(--color-primary)_24%,var(--ui-card-default-border))] [border-width:var(--ui-card-border-width)]", + "bg-[color-mix(in_oklch,var(--color-primary)_7%,var(--ui-card-default-bg))] px-4 py-3", + "shadow-[var(--ui-card-subtle-shadow)]" ] ); diff --git a/packages/ui/src/components/dropdown-menu.variants.ts b/packages/ui/src/components/dropdown-menu.variants.ts index 83fcf45..dca0fad 100644 --- a/packages/ui/src/components/dropdown-menu.variants.ts +++ b/packages/ui/src/components/dropdown-menu.variants.ts @@ -2,7 +2,8 @@ import { cva } from "../lib/cva"; export const dropdownMenuContentVariants = cva( [ - "z-50 min-w-[12rem] overflow-hidden rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-card)] p-1.5 text-[var(--color-card-foreground)] shadow-[var(--shadow-md)] outline-none", + "z-50 min-w-[12rem] overflow-hidden rounded-[var(--ui-panel-radius)] border border-[var(--ui-panel-border)] bg-[var(--ui-panel-bg)] p-1.5 text-[var(--color-card-foreground)] shadow-[var(--ui-panel-shadow)] outline-none", + "[border-width:var(--ui-panel-border-width)] backdrop-blur-[var(--ui-panel-backdrop-blur)]", "data-[state=open]:motion-enter-rise data-[state=closed]:motion-exit-drop", "data-[side=bottom]:origin-top data-[side=left]:origin-right data-[side=right]:origin-left data-[side=top]:origin-bottom" ], @@ -22,9 +23,9 @@ export const dropdownMenuContentVariants = cva( export const dropdownMenuItemVariants = cva( [ - "relative flex cursor-default select-none items-center gap-2 rounded-[calc(var(--radius-sm)-4px)] px-2.5 py-2 text-sm outline-none", + "relative flex cursor-default select-none items-center gap-2 rounded-[var(--ui-control-radius)] px-2.5 py-2 text-sm outline-none", "text-[var(--color-foreground)] transition-colors duration-[var(--dur-fast)] ease-[var(--ease-standard)]", - "focus:bg-[var(--color-surface)] focus:text-[var(--color-foreground)] data-[highlighted]:bg-[var(--color-surface)] data-[highlighted]:text-[var(--color-foreground)]", + "focus:bg-[var(--ui-control-bg)] focus:text-[var(--color-foreground)] data-[highlighted]:bg-[var(--ui-control-bg)] data-[highlighted]:text-[var(--color-foreground)]", "data-[disabled]:pointer-events-none data-[disabled]:opacity-45" ], { diff --git a/packages/ui/src/components/empty-state.variants.ts b/packages/ui/src/components/empty-state.variants.ts index 1463052..2df77f7 100644 --- a/packages/ui/src/components/empty-state.variants.ts +++ b/packages/ui/src/components/empty-state.variants.ts @@ -3,18 +3,18 @@ import { getMotionRecipeClassNames } from "../lib/motion"; export const emptyStateVariants = cva( [ - "grid gap-6 rounded-[var(--radius-lg)] border p-8 shadow-[var(--shadow-sm)] sm:p-10", + "grid gap-6 rounded-[var(--ui-card-radius)] border p-8 shadow-[var(--ui-card-default-shadow)] sm:p-10 [border-width:var(--ui-card-border-width)]", "justify-items-center text-center text-[var(--color-card-foreground)]", getMotionRecipeClassNames("transition", "ring") ], { variants: { tone: { - default: "border-[var(--color-border)] bg-[var(--color-card)]", + default: "border-[var(--ui-card-default-border)] bg-[var(--ui-card-default-bg)]", subtle: - "border-[color-mix(in_oklch,var(--color-border)_82%,transparent)] bg-[var(--color-surface)] shadow-[var(--shadow-xs)]", + "border-[var(--ui-card-subtle-border)] bg-[var(--ui-card-subtle-bg)] shadow-[var(--ui-card-subtle-shadow)]", accent: - "border-[color-mix(in_oklch,var(--color-primary)_24%,var(--color-border))] bg-[color-mix(in_oklch,var(--color-primary)_8%,var(--color-card))]" + "border-[var(--ui-card-accent-border)] bg-[var(--ui-card-accent-bg)] shadow-[var(--ui-card-accent-shadow)]" } }, defaultVariants: { @@ -25,9 +25,9 @@ export const emptyStateVariants = cva( export const emptyStateMediaVariants = cva( [ - "grid min-h-20 min-w-20 place-items-center rounded-[var(--radius-lg)] border p-4", - "border-[color-mix(in_oklch,var(--color-border)_88%,transparent)] bg-[linear-gradient(180deg,color-mix(in_oklch,var(--color-background)_72%,white_28%),var(--color-surface))]", - "text-[var(--color-foreground)] shadow-[var(--shadow-xs)]" + "grid min-h-20 min-w-20 place-items-center rounded-[var(--ui-card-radius)] border p-4 [border-width:var(--ui-card-border-width)]", + "border-[var(--ui-card-subtle-border)] bg-[linear-gradient(180deg,color-mix(in_oklch,var(--color-background)_72%,white_28%),var(--ui-card-subtle-bg))]", + "text-[var(--color-foreground)] shadow-[var(--ui-card-subtle-shadow)]" ] ); diff --git a/packages/ui/src/components/popover.variants.ts b/packages/ui/src/components/popover.variants.ts index 8cda490..03bd9f9 100644 --- a/packages/ui/src/components/popover.variants.ts +++ b/packages/ui/src/components/popover.variants.ts @@ -2,7 +2,8 @@ import { cva } from "../lib/cva"; export const popoverContentVariants = cva( [ - "z-50 rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-[var(--color-card-foreground)] shadow-[var(--shadow-md)] outline-none", + "z-50 rounded-[var(--ui-panel-radius)] border border-[var(--ui-panel-border)] bg-[var(--ui-panel-bg)] p-4 text-[var(--color-card-foreground)] shadow-[var(--ui-panel-shadow)] outline-none", + "[border-width:var(--ui-panel-border-width)] backdrop-blur-[var(--ui-panel-backdrop-blur)]", "data-[state=open]:motion-enter-rise data-[state=closed]:motion-exit-drop", "data-[side=bottom]:origin-top data-[side=left]:origin-right data-[side=right]:origin-left data-[side=top]:origin-bottom" ], diff --git a/packages/ui/src/components/radio-group.variants.ts b/packages/ui/src/components/radio-group.variants.ts index 1cc349e..94e2966 100644 --- a/packages/ui/src/components/radio-group.variants.ts +++ b/packages/ui/src/components/radio-group.variants.ts @@ -15,7 +15,8 @@ export const radioGroupVariants = cva(["grid gap-3"], { export const radioGroupItemVariants = cva( [ - "inline-flex size-5 shrink-0 items-center justify-center rounded-full border border-[var(--color-border-strong)] bg-[var(--color-card)] shadow-[var(--shadow-xs)] outline-none", + "inline-flex size-5 shrink-0 items-center justify-center rounded-[var(--ui-control-radius)] border bg-[var(--ui-control-bg)] shadow-[var(--ui-control-shadow)] outline-none", + "[border-width:var(--ui-input-border-width)] border-[var(--ui-control-border)]", "text-[var(--color-primary)] transition-[background-color,border-color,box-shadow,transform] duration-[var(--dur-fast)] ease-[var(--ease-standard)]", "focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-background)]", "data-[disabled]:cursor-not-allowed data-[disabled]:opacity-45", diff --git a/packages/ui/src/components/select.variants.ts b/packages/ui/src/components/select.variants.ts index 80e5b91..a39ff38 100644 --- a/packages/ui/src/components/select.variants.ts +++ b/packages/ui/src/components/select.variants.ts @@ -3,10 +3,11 @@ import { getMotionRecipeClassNames } from "../lib/motion"; export const selectTriggerVariants = cva( [ - "inline-flex h-11 w-full items-center justify-between gap-3 rounded-[var(--radius-md)] border border-[var(--color-input)] bg-[var(--color-card)] px-4 text-left text-sm text-[var(--color-foreground)] shadow-[var(--shadow-xs)] outline-none", + "inline-flex h-11 w-full items-center justify-between gap-3 rounded-[var(--ui-input-radius)] border bg-[var(--ui-input-bg)] px-4 text-left text-sm text-[var(--ui-input-fg)] shadow-[var(--ui-input-shadow)] outline-none", + "[border-width:var(--ui-input-border-width)] border-[var(--ui-input-border)] backdrop-blur-[var(--ui-input-backdrop-blur)]", "placeholder:text-[var(--color-muted-foreground)]", "focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-background)]", - "data-[placeholder]:text-[var(--color-muted-foreground)] data-[disabled]:cursor-not-allowed data-[disabled]:bg-[var(--color-surface)] data-[disabled]:text-[var(--color-muted-foreground)] data-[disabled]:opacity-100", + "data-[placeholder]:text-[var(--color-muted-foreground)] data-[disabled]:cursor-not-allowed data-[disabled]:bg-[var(--ui-input-disabled-bg)] data-[disabled]:text-[var(--color-muted-foreground)] data-[disabled]:opacity-100", "aria-[invalid=true]:border-[color-mix(in_oklch,var(--color-destructive)_42%,var(--color-border-strong))]", "aria-[invalid=true]:shadow-[0_0_0_1px_color-mix(in_oklch,var(--color-destructive)_28%,transparent)]", getMotionRecipeClassNames("ring") @@ -14,7 +15,8 @@ export const selectTriggerVariants = cva( ); export const selectContentVariants = cva([ - "relative z-50 min-w-[var(--radix-select-trigger-width)] overflow-hidden rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-card)] p-1.5 text-[var(--color-card-foreground)] shadow-[var(--shadow-md)] outline-none", + "relative z-50 min-w-[var(--radix-select-trigger-width)] overflow-hidden rounded-[var(--ui-panel-radius)] border border-[var(--ui-panel-border)] bg-[var(--ui-panel-bg)] p-1.5 text-[var(--color-card-foreground)] shadow-[var(--ui-panel-shadow)] outline-none", + "[border-width:var(--ui-panel-border-width)] backdrop-blur-[var(--ui-panel-backdrop-blur)]", "data-[state=open]:motion-enter-rise data-[state=closed]:motion-exit-drop" ]); @@ -23,9 +25,9 @@ export const selectViewportVariants = cva([ ]); export const selectItemVariants = cva([ - "relative flex w-full cursor-default select-none items-center gap-2 rounded-[calc(var(--radius-sm)-4px)] px-8 py-2 text-sm text-[var(--color-foreground)] outline-none", + "relative flex w-full cursor-default select-none items-center gap-2 rounded-[var(--ui-control-radius)] px-8 py-2 text-sm text-[var(--color-foreground)] outline-none", "transition-colors duration-[var(--dur-fast)] ease-[var(--ease-standard)]", - "focus:bg-[var(--color-surface)] focus:text-[var(--color-foreground)] data-[highlighted]:bg-[var(--color-surface)] data-[highlighted]:text-[var(--color-foreground)]", + "focus:bg-[var(--ui-control-bg)] focus:text-[var(--color-foreground)] data-[highlighted]:bg-[var(--ui-control-bg)] data-[highlighted]:text-[var(--color-foreground)]", "data-[disabled]:pointer-events-none data-[disabled]:opacity-45" ]); diff --git a/packages/ui/src/components/sheet.tsx b/packages/ui/src/components/sheet.tsx index df7bfc3..799b255 100644 --- a/packages/ui/src/components/sheet.tsx +++ b/packages/ui/src/components/sheet.tsx @@ -62,7 +62,7 @@ export const SheetContent = forwardRef< {children}