@djangocfg/ui-core 2.1.352 → 2.1.354

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/package.json +4 -4
  2. package/src/components/data/badge/index.tsx +1 -1
  3. package/src/components/data/calendar/calendar.tsx +1 -1
  4. package/src/components/data/chart/index.tsx +1 -1
  5. package/src/components/data/toggle/index.tsx +1 -1
  6. package/src/components/feedback/alert/index.tsx +1 -1
  7. package/src/components/feedback/empty/index.tsx +2 -2
  8. package/src/components/forms/button/index.tsx +4 -4
  9. package/src/components/forms/button-group/index.tsx +1 -1
  10. package/src/components/forms/field/index.tsx +1 -1
  11. package/src/components/forms/input/index.tsx +2 -2
  12. package/src/components/forms/input-group/index.tsx +2 -2
  13. package/src/components/forms/textarea/index.tsx +2 -2
  14. package/src/components/layout/card/index.tsx +1 -1
  15. package/src/components/navigation/command/index.tsx +3 -3
  16. package/src/components/navigation/context-menu/index.tsx +6 -6
  17. package/src/components/navigation/dropdown-menu/index.tsx +6 -6
  18. package/src/components/navigation/menubar/index.tsx +8 -8
  19. package/src/components/navigation/navigation-menu/index.tsx +2 -2
  20. package/src/components/navigation/tabs/index.tsx +3 -3
  21. package/src/components/overlay/alert-dialog/index.tsx +1 -1
  22. package/src/components/overlay/dialog/index.tsx +1 -1
  23. package/src/components/overlay/hover-card/index.tsx +1 -1
  24. package/src/components/overlay/popover/index.tsx +1 -1
  25. package/src/components/overlay/side-panel/index.tsx +1 -1
  26. package/src/components/overlay/tooltip/index.tsx +1 -1
  27. package/src/components/select/country-select.tsx +2 -2
  28. package/src/components/select/language-select.tsx +2 -2
  29. package/src/components/select/select.tsx +3 -3
  30. package/src/components/specialized/copy/index.tsx +1 -1
  31. package/src/components/specialized/item/index.tsx +1 -1
  32. package/src/styles/base.css +9 -0
  33. package/src/styles/theme/dark.css +1 -0
  34. package/src/styles/theme/light.css +3 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@djangocfg/ui-core",
3
- "version": "2.1.352",
3
+ "version": "2.1.354",
4
4
  "description": "Pure React UI component library without Next.js dependencies - for Electron, Vite, CRA apps",
5
5
  "keywords": [
6
6
  "ui-components",
@@ -91,7 +91,7 @@
91
91
  "playground": "playground dev"
92
92
  },
93
93
  "peerDependencies": {
94
- "@djangocfg/i18n": "^2.1.352",
94
+ "@djangocfg/i18n": "^2.1.354",
95
95
  "consola": "^3.4.2",
96
96
  "lucide-react": "^0.545.0",
97
97
  "moment": "^2.30.1",
@@ -161,9 +161,9 @@
161
161
  "vaul": "1.1.2"
162
162
  },
163
163
  "devDependencies": {
164
- "@djangocfg/i18n": "^2.1.352",
164
+ "@djangocfg/i18n": "^2.1.354",
165
165
  "@djangocfg/playground": "workspace:*",
166
- "@djangocfg/typescript-config": "^2.1.352",
166
+ "@djangocfg/typescript-config": "^2.1.354",
167
167
  "@types/node": "^24.7.2",
168
168
  "@types/react": "^19.1.0",
169
169
  "@types/react-dom": "^19.1.0",
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
  import { cn } from '../../../lib/utils';
5
5
 
6
6
  const badgeVariants = cva(
7
- "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
7
+ "inline-flex items-center rounded-[var(--radius)] border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
8
8
  {
9
9
  variants: {
10
10
  variant: {
@@ -66,7 +66,7 @@ function Calendar({
66
66
  defaultClassNames.dropdowns
67
67
  ),
68
68
  dropdown_root: cn(
69
- "has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",
69
+ "has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-[var(--radius)] border",
70
70
  defaultClassNames.dropdown_root
71
71
  ),
72
72
  dropdown: cn(
@@ -179,7 +179,7 @@ const ChartTooltipContent = React.forwardRef<
179
179
  <div
180
180
  ref={ref}
181
181
  className={cn(
182
- "grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
182
+ "grid min-w-[8rem] items-start gap-1.5 rounded-[var(--radius-popover)] border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
183
183
  className
184
184
  )}
185
185
  >
@@ -8,7 +8,7 @@ import * as TogglePrimitive from '@radix-ui/react-toggle';
8
8
  import { cn } from '../../../lib/utils';
9
9
 
10
10
  const toggleVariants = cva(
11
- "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
11
+ "inline-flex items-center justify-center gap-2 rounded-[var(--radius)] text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
12
12
  {
13
13
  variants: {
14
14
  variant: {
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
  import { cn } from '../../../lib/utils';
5
5
 
6
6
  const alertVariants = cva(
7
- "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
7
+ "relative w-full rounded-[var(--radius)] border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
8
8
  {
9
9
  variants: {
10
10
  variant: {
@@ -7,7 +7,7 @@ function Empty({ className, ...props }: React.ComponentProps<"div">) {
7
7
  <div
8
8
  data-slot="empty"
9
9
  className={cn(
10
- "flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-lg border-dashed p-6 text-center md:p-12",
10
+ "flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-[var(--radius)] border-dashed p-6 text-center md:p-12",
11
11
  className
12
12
  )}
13
13
  {...props}
@@ -34,7 +34,7 @@ const emptyMediaVariants = cva(
34
34
  variants: {
35
35
  variant: {
36
36
  default: "bg-transparent",
37
- icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6",
37
+ icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-[var(--radius)] [justify-center rounded-lg [&_svg_svg:not([class*='size-'])]:size-6",
38
38
  },
39
39
  },
40
40
  defaultVariants: {
@@ -10,7 +10,7 @@ import { cn } from '../../../lib/utils';
10
10
  import { Link } from '../../navigation/link';
11
11
 
12
12
  const buttonVariants = cva(
13
- "inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-semibold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
13
+ "inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-[var(--radius)] text-sm font-semibold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
14
14
  {
15
15
  variants: {
16
16
  variant: {
@@ -27,10 +27,10 @@ const buttonVariants = cva(
27
27
  },
28
28
  size: {
29
29
  default: "h-9 px-4 py-2",
30
- sm: "h-8 rounded-md px-3 text-sm",
30
+ sm: "h-8 rounded-[var(--radius)] px-3 text-sm",
31
31
  xs: "h-7 rounded px-2 py-1 text-xs",
32
- lg: "h-11 rounded-md px-8",
33
- huge: "h-14 rounded-md px-10 text-lg",
32
+ lg: "h-11 rounded-[var(--radius)] px-8",
33
+ huge: "h-14 rounded-[var(--radius)] px-10 text-lg",
34
34
  icon: "h-9 w-9",
35
35
  },
36
36
  },
@@ -52,7 +52,7 @@ function ButtonGroupText({
52
52
  return (
53
53
  <Comp
54
54
  className={cn(
55
- "bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",
55
+ "bg-muted shadow-xs flex items-center gap-2 rounded-[var(--radius)] border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",
56
56
  className
57
57
  )}
58
58
  {...props}
@@ -116,7 +116,7 @@ function FieldLabel({
116
116
  data-slot="field-label"
117
117
  className={cn(
118
118
  "group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50",
119
- "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4",
119
+ "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-[var(--radius)] has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4",
120
120
  "has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",
121
121
  className
122
122
  )}
@@ -63,7 +63,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
63
63
  <input
64
64
  type={type}
65
65
  className={cn(
66
- "flex h-10 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
66
+ "flex h-10 w-full rounded-[var(--radius)] border border-input bg-transparent px-3 py-2 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
67
67
  className
68
68
  )}
69
69
  ref={ref}
@@ -82,7 +82,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
82
82
  <input
83
83
  type={type}
84
84
  className={cn(
85
- "flex h-10 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
85
+ "flex h-10 w-full rounded-[var(--radius)] border border-input bg-transparent px-3 py-2 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
86
86
  className
87
87
  )}
88
88
  ref={ref}
@@ -14,7 +14,7 @@ function InputGroup({ className, ...props }: React.ComponentProps<"div">) {
14
14
  data-slot="input-group"
15
15
  role="group"
16
16
  className={cn(
17
- "group/input-group border-input dark:bg-input/30 shadow-xs relative flex w-full items-center rounded-md border outline-none transition-[color,box-shadow]",
17
+ "group/input-group border-input dark:bg-input/30 shadow-xs relative flex w-full items-center rounded-[var(--radius)] border outline-none transition-[color,box-shadow]",
18
18
  "h-9 has-[>textarea]:h-auto",
19
19
 
20
20
  // Variants based on alignment.
@@ -85,7 +85,7 @@ const inputGroupButtonVariants = cva(
85
85
  variants: {
86
86
  size: {
87
87
  xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
88
- sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
88
+ sm: "h-8 gap-1.5 rounded-[var(--radius)] px-2.5 has-[>svg]:px-2.5",
89
89
  "icon-xs":
90
90
  "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
91
91
  "icon-sm": "size-8 p-0 has-[>svg]:p-0",
@@ -41,7 +41,7 @@ const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
41
41
  return (
42
42
  <textarea
43
43
  className={cn(
44
- "flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
44
+ "flex min-h-[60px] w-full rounded-[var(--radius)] border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
45
45
  className
46
46
  )}
47
47
  ref={ref}
@@ -55,7 +55,7 @@ const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
55
55
  return (
56
56
  <textarea
57
57
  className={cn(
58
- "flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
58
+ "flex min-h-[60px] w-full rounded-[var(--radius)] border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
59
59
  className
60
60
  )}
61
61
  ref={ref}
@@ -9,7 +9,7 @@ const Card = React.forwardRef<
9
9
  <div
10
10
  ref={ref}
11
11
  className={cn(
12
- "rounded-xl border bg-card text-card-foreground shadow",
12
+ "rounded-[var(--radius-popover)] border bg-card text-card-foreground [box-shadow:var(--shadow-card)]",
13
13
  className
14
14
  )}
15
15
  {...props}
@@ -16,7 +16,7 @@ const Command = React.forwardRef<
16
16
  <CommandPrimitive
17
17
  ref={ref}
18
18
  className={cn(
19
- "flex h-full w-full flex-col rounded-md bg-popover text-popover-foreground",
19
+ "flex h-full w-full flex-col rounded-[var(--radius-popover)] bg-popover text-popover-foreground",
20
20
  className
21
21
  )}
22
22
  {...props}
@@ -45,7 +45,7 @@ const CommandInput = React.forwardRef<
45
45
  <CommandPrimitive.Input
46
46
  ref={ref}
47
47
  className={cn(
48
- "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
48
+ "flex h-10 w-full rounded-[var(--radius)] bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
49
49
  className
50
50
  )}
51
51
  {...props}
@@ -134,7 +134,7 @@ const CommandItem = React.forwardRef<
134
134
  <CommandPrimitive.Item
135
135
  ref={ref}
136
136
  className={cn(
137
- "relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
137
+ "relative flex cursor-default gap-2 select-none items-center rounded-[var(--radius-sm)] px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
138
138
  className
139
139
  )}
140
140
  {...props}
@@ -28,7 +28,7 @@ const ContextMenuSubTrigger = React.forwardRef<
28
28
  <ContextMenuPrimitive.SubTrigger
29
29
  ref={ref}
30
30
  className={cn(
31
- "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
31
+ "flex cursor-default select-none items-center rounded-[var(--radius-sm)] px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
32
32
  inset && "pl-8",
33
33
  className
34
34
  )}
@@ -47,7 +47,7 @@ const ContextMenuSubContent = React.forwardRef<
47
47
  <ContextMenuPrimitive.SubContent
48
48
  ref={ref}
49
49
  className={cn(
50
- "z-150 min-w-32 overflow-hidden rounded-sm border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
50
+ "z-150 min-w-32 overflow-hidden rounded-[var(--radius-popover)] border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
51
51
  className
52
52
  )}
53
53
  {...props}
@@ -63,7 +63,7 @@ const ContextMenuContent = React.forwardRef<
63
63
  <ContextMenuPrimitive.Content
64
64
  ref={ref}
65
65
  className={cn(
66
- "z-150 max-h-[--radix-context-menu-content-available-height] min-w-32 overflow-y-auto overflow-x-hidden rounded-sm border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
66
+ "z-150 max-h-[--radix-context-menu-content-available-height] min-w-32 overflow-y-auto overflow-x-hidden rounded-[var(--radius-popover)] border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
67
67
  className
68
68
  )}
69
69
  {...props}
@@ -85,7 +85,7 @@ const ContextMenuItem = React.forwardRef<
85
85
  ref={ref}
86
86
  data-variant={variant}
87
87
  className={cn(
88
- "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
88
+ "relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
89
89
  "data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive",
90
90
  inset && "pl-8",
91
91
  className
@@ -102,7 +102,7 @@ const ContextMenuCheckboxItem = React.forwardRef<
102
102
  <ContextMenuPrimitive.CheckboxItem
103
103
  ref={ref}
104
104
  className={cn(
105
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
105
+ "relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
106
106
  className
107
107
  )}
108
108
  checked={checked}
@@ -126,7 +126,7 @@ const ContextMenuRadioItem = React.forwardRef<
126
126
  <ContextMenuPrimitive.RadioItem
127
127
  ref={ref}
128
128
  className={cn(
129
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
129
+ "relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
130
130
  className
131
131
  )}
132
132
  {...props}
@@ -28,7 +28,7 @@ const DropdownMenuSubTrigger = React.forwardRef<
28
28
  <DropdownMenuPrimitive.SubTrigger
29
29
  ref={ref}
30
30
  className={cn(
31
- "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
31
+ "flex cursor-default select-none items-center gap-2 rounded-[var(--radius-sm)] px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
32
32
  inset && "pl-8",
33
33
  className
34
34
  )}
@@ -48,7 +48,7 @@ const DropdownMenuSubContent = React.forwardRef<
48
48
  <DropdownMenuPrimitive.SubContent
49
49
  ref={ref}
50
50
  className={cn(
51
- "z-600 min-w-32 overflow-hidden rounded-sm border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
51
+ "z-600 min-w-32 overflow-hidden rounded-[var(--radius-popover)] border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
52
52
  className
53
53
  )}
54
54
  {...props}
@@ -66,7 +66,7 @@ const DropdownMenuContent = React.forwardRef<
66
66
  ref={ref}
67
67
  sideOffset={sideOffset}
68
68
  className={cn(
69
- "z-600 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-32 overflow-y-auto overflow-x-hidden rounded-sm border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-sm",
69
+ "z-600 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-32 overflow-y-auto overflow-x-hidden rounded-[var(--radius-popover)] border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-md",
70
70
  "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
71
71
  className
72
72
  )}
@@ -87,7 +87,7 @@ const DropdownMenuItem = React.forwardRef<
87
87
  }
88
88
  >(({ className, inset, href, variant = "default", children, ...props }, ref) => {
89
89
  const classes = cn(
90
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
90
+ "relative flex cursor-default select-none items-center gap-2 rounded-[var(--radius-sm)] px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
91
91
  "data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive",
92
92
  inset && "pl-8",
93
93
  className
@@ -123,7 +123,7 @@ const DropdownMenuCheckboxItem = React.forwardRef<
123
123
  <DropdownMenuPrimitive.CheckboxItem
124
124
  ref={ref}
125
125
  className={cn(
126
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
126
+ "relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
127
127
  className
128
128
  )}
129
129
  checked={checked}
@@ -147,7 +147,7 @@ const DropdownMenuRadioItem = React.forwardRef<
147
147
  <DropdownMenuPrimitive.RadioItem
148
148
  ref={ref}
149
149
  className={cn(
150
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
150
+ "relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
151
151
  className
152
152
  )}
153
153
  {...props}
@@ -44,7 +44,7 @@ const Menubar = React.forwardRef<
44
44
  <MenubarPrimitive.Root
45
45
  ref={ref}
46
46
  className={cn(
47
- "flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm",
47
+ "flex h-9 items-center space-x-1 rounded-[var(--radius)] border bg-background p-1 shadow-sm",
48
48
  className
49
49
  )}
50
50
  {...props}
@@ -59,7 +59,7 @@ const MenubarTrigger = React.forwardRef<
59
59
  <MenubarPrimitive.Trigger
60
60
  ref={ref}
61
61
  className={cn(
62
- "flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
62
+ "flex cursor-default select-none items-center rounded-[var(--radius-sm)] px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
63
63
  className
64
64
  )}
65
65
  {...props}
@@ -76,7 +76,7 @@ const MenubarSubTrigger = React.forwardRef<
76
76
  <MenubarPrimitive.SubTrigger
77
77
  ref={ref}
78
78
  className={cn(
79
- "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
79
+ "flex cursor-default select-none items-center rounded-[var(--radius-sm)] px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
80
80
  inset && "pl-8",
81
81
  className
82
82
  )}
@@ -95,7 +95,7 @@ const MenubarSubContent = React.forwardRef<
95
95
  <MenubarPrimitive.SubContent
96
96
  ref={ref}
97
97
  className={cn(
98
- "z-150 min-w-32 overflow-hidden rounded-md border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
98
+ "z-150 min-w-32 overflow-hidden rounded-[var(--radius-popover)] border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
99
99
  className
100
100
  )}
101
101
  {...props}
@@ -118,7 +118,7 @@ const MenubarContent = React.forwardRef<
118
118
  alignOffset={alignOffset}
119
119
  sideOffset={sideOffset}
120
120
  className={cn(
121
- "z-150 min-w-48 overflow-hidden rounded-md border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
121
+ "z-150 min-w-48 overflow-hidden rounded-[var(--radius-popover)] border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
122
122
  className
123
123
  )}
124
124
  {...props}
@@ -139,7 +139,7 @@ const MenubarItem = React.forwardRef<
139
139
  }
140
140
  >(({ className, inset, href, variant = "default", children, ...props }, ref) => {
141
141
  const classes = cn(
142
- "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
142
+ "relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
143
143
  "data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive",
144
144
  inset && "pl-8",
145
145
  className
@@ -175,7 +175,7 @@ const MenubarCheckboxItem = React.forwardRef<
175
175
  <MenubarPrimitive.CheckboxItem
176
176
  ref={ref}
177
177
  className={cn(
178
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
178
+ "relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
179
179
  className
180
180
  )}
181
181
  checked={checked}
@@ -198,7 +198,7 @@ const MenubarRadioItem = React.forwardRef<
198
198
  <MenubarPrimitive.RadioItem
199
199
  ref={ref}
200
200
  className={cn(
201
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
201
+ "relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
202
202
  className
203
203
  )}
204
204
  {...props}
@@ -44,7 +44,7 @@ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName
44
44
  const NavigationMenuItem = NavigationMenuPrimitive.Item
45
45
 
46
46
  const navigationMenuTriggerStyle = cva(
47
- "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent"
47
+ "group inline-flex h-9 w-max items-center justify-center rounded-[var(--radius)] bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent"
48
48
  )
49
49
 
50
50
  const NavigationMenuTrigger = React.forwardRef<
@@ -112,7 +112,7 @@ const NavigationMenuViewport = React.forwardRef<
112
112
  >
113
113
  <NavigationMenuPrimitive.Viewport
114
114
  className={cn(
115
- "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] overflow-hidden rounded-md border backdrop-blur-xl bg-popover/80 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 w-[var(--radix-navigation-menu-viewport-width)]",
115
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] overflow-hidden rounded-[var(--radius-popover)] border backdrop-blur-xl bg-popover/80 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 w-[var(--radix-navigation-menu-viewport-width)]",
116
116
  className
117
117
  )}
118
118
  ref={ref}
@@ -166,7 +166,7 @@ const Tabs = React.forwardRef<
166
166
  triggerProps.onClick?.(e)
167
167
  },
168
168
  className: cn(
169
- "flex items-center gap-3 px-3 py-2 rounded-md transition-colors justify-start w-full",
169
+ "flex items-center gap-3 px-3 py-2 rounded-[var(--radius-sm)] transition-colors justify-start w-full",
170
170
  "data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",
171
171
  "hover:bg-muted",
172
172
  triggerProps.className
@@ -219,7 +219,7 @@ const TabsList = React.forwardRef<
219
219
  const listCls = cn(
220
220
  isUnderline
221
221
  ? "inline-flex items-end gap-0 bg-transparent p-0 h-auto rounded-none"
222
- : "inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
222
+ : "inline-flex h-9 items-center justify-center rounded-[var(--radius)] bg-muted p-1 text-muted-foreground",
223
223
  fullWidth && "w-full flex",
224
224
  className
225
225
  )
@@ -284,7 +284,7 @@ const TabsTrigger = React.forwardRef<
284
284
  "data-[state=active]:border-foreground data-[state=active]:shadow-none",
285
285
  ].join(" ")
286
286
  : [
287
- "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1",
287
+ "inline-flex items-center justify-center whitespace-nowrap rounded-[var(--radius-sm)] px-3 py-1",
288
288
  "text-sm font-medium ring-offset-background transition-all",
289
289
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
290
290
  "disabled:pointer-events-none disabled:opacity-50",
@@ -38,7 +38,7 @@ const AlertDialogContent = React.forwardRef<
38
38
  <AlertDialogPrimitive.Content
39
39
  ref={ref}
40
40
  className={cn(
41
- "fixed left-1/2 top-1/2 z-600 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg",
41
+ "fixed left-1/2 top-1/2 z-600 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-[var(--radius-dialog)]",
42
42
  className
43
43
  )}
44
44
  {...props}
@@ -63,7 +63,7 @@ const DialogContent = React.forwardRef<
63
63
  "fixed z-600 bg-background duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
64
64
  fullscreen
65
65
  ? "left-0 top-0 grid h-[100dvh] w-screen max-w-none gap-0 border-0 p-0 shadow-none data-[state=closed]:zoom-out-[0.98] data-[state=open]:zoom-in-[0.98]"
66
- : "left-1/2 top-1/2 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border p-6 shadow-lg sm:rounded-lg data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
66
+ : "left-1/2 top-1/2 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border p-6 shadow-lg sm:rounded-[var(--radius-dialog)] data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
67
67
  className
68
68
  )}
69
69
  {...props}
@@ -20,7 +20,7 @@ const HoverCardContent = React.forwardRef<
20
20
  align={align}
21
21
  sideOffset={sideOffset}
22
22
  className={cn(
23
- "z-150 w-64 rounded-sm border bg-popover backdrop-blur-xl p-4 text-popover-foreground shadow-sm outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
23
+ "z-150 w-64 rounded-[var(--radius-popover)] border bg-popover backdrop-blur-xl p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
24
24
  className
25
25
  )}
26
26
  {...props}
@@ -23,7 +23,7 @@ const PopoverContent = React.forwardRef<
23
23
  align={align}
24
24
  sideOffset={sideOffset}
25
25
  className={cn(
26
- "z-[700] w-72 rounded-sm border bg-popover backdrop-blur-xl p-4 text-popover-foreground shadow-sm outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
26
+ "z-[700] w-72 rounded-[var(--radius-popover)] border bg-popover backdrop-blur-xl p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
27
27
  className
28
28
  )}
29
29
  {...props}
@@ -222,7 +222,7 @@ const SidePanelClose = React.forwardRef<HTMLButtonElement, SidePanelCloseProps>(
222
222
  aria-label={label}
223
223
  title={`${label} (Esc)`}
224
224
  className={cn(
225
- 'shrink-0 h-7 w-7 inline-flex items-center justify-center rounded-md',
225
+ 'shrink-0 h-7 w-7 inline-flex items-center justify-center rounded-[var(--radius-sm)]',
226
226
  'text-muted-foreground hover:text-foreground hover:bg-muted transition-colors',
227
227
  className,
228
228
  )}
@@ -22,7 +22,7 @@ const TooltipContent = React.forwardRef<
22
22
  aria-describedby={undefined}
23
23
  sideOffset={sideOffset}
24
24
  className={cn(
25
- "z-[700] overflow-hidden rounded-md border border-border bg-popover px-3 py-1.5 text-xs text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
25
+ "z-[700] overflow-hidden rounded-[var(--radius-tooltip)] border border-border bg-popover px-3 py-1.5 text-xs text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
26
26
  className
27
27
  )}
28
28
  {...props}
@@ -222,7 +222,7 @@ export function CountrySelect({
222
222
  )}
223
223
 
224
224
  {/* Country list */}
225
- <ScrollArea style={{ height: maxHeight }} className="rounded-md border">
225
+ <ScrollArea style={{ height: maxHeight }} className="rounded-[var(--radius-popover)] border">
226
226
  <div className="p-1">
227
227
  {filteredCountries.length === 0 ? (
228
228
  <p className="text-sm text-muted-foreground text-center py-4">
@@ -235,7 +235,7 @@ export function CountrySelect({
235
235
  <label
236
236
  key={country.code}
237
237
  className={cn(
238
- 'flex items-center gap-3 px-3 py-2 rounded-md cursor-pointer',
238
+ 'flex items-center gap-3 px-3 py-2 rounded-[var(--radius-sm)] cursor-pointer',
239
239
  'hover:bg-accent/50 transition-colors',
240
240
  isSelected && 'bg-primary/5',
241
241
  disabled && 'opacity-50 cursor-not-allowed',
@@ -229,7 +229,7 @@ export function LanguageSelect({
229
229
  )}
230
230
 
231
231
  {/* Language list */}
232
- <ScrollArea style={{ height: maxHeight }} className="rounded-md border">
232
+ <ScrollArea style={{ height: maxHeight }} className="rounded-[var(--radius-popover)] border">
233
233
  <div className="p-1">
234
234
  {filteredLanguages.length === 0 ? (
235
235
  <p className="text-sm text-muted-foreground text-center py-4">
@@ -251,7 +251,7 @@ export function LanguageSelect({
251
251
  }
252
252
  }}
253
253
  className={cn(
254
- 'flex items-center gap-3 px-3 py-2 rounded-md cursor-pointer',
254
+ 'flex items-center gap-3 px-3 py-2 rounded-[var(--radius-sm)] cursor-pointer',
255
255
  'hover:bg-accent/50 transition-colors',
256
256
  isSelected && 'bg-primary/5',
257
257
  disabled && 'opacity-50 cursor-not-allowed',
@@ -58,7 +58,7 @@ const SelectTrigger = React.forwardRef<
58
58
  <SelectPrimitive.Trigger
59
59
  ref={ref}
60
60
  className={cn(
61
- "flex h-10 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
61
+ "flex h-10 w-full items-center justify-between whitespace-nowrap rounded-[var(--radius)] border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
62
62
  className
63
63
  )}
64
64
  {...props}
@@ -117,7 +117,7 @@ const SelectContent = React.forwardRef<
117
117
  <SelectPrimitive.Content
118
118
  ref={ref}
119
119
  className={cn(
120
- "relative z-[700] max-h-[--radix-select-content-available-height] min-w-32 overflow-y-auto overflow-x-hidden rounded-sm border bg-popover backdrop-blur-xl text-popover-foreground shadow-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
120
+ "relative z-[700] max-h-[--radix-select-content-available-height] min-w-32 overflow-y-auto overflow-x-hidden rounded-[var(--radius-popover)] border bg-popover backdrop-blur-xl text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
121
121
  position === "popper" &&
122
122
  "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
123
123
  className
@@ -165,7 +165,7 @@ const SelectItem = React.forwardRef<
165
165
  ref={ref}
166
166
  value={value === '' ? EMPTY_SENTINEL : value}
167
167
  className={cn(
168
- "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
168
+ "relative flex w-full cursor-default select-none items-center rounded-[var(--radius-sm)] py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
169
169
  className
170
170
  )}
171
171
  {...props}
@@ -118,7 +118,7 @@ const CopyField = React.forwardRef<HTMLDivElement, CopyFieldProps>(
118
118
  <div
119
119
  ref={ref}
120
120
  className={cn(
121
- 'flex items-center justify-between gap-2 p-3 rounded-lg bg-muted',
121
+ 'flex items-center justify-between gap-2 p-3 rounded-[var(--radius)] bg-muted',
122
122
  className
123
123
  )}
124
124
  {...props}
@@ -34,7 +34,7 @@ function ItemSeparator({
34
34
  }
35
35
 
36
36
  const itemVariants = cva(
37
- "group/item [a]:hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-ring/50 [a]:transition-colors flex flex-wrap items-center rounded-md border border-transparent text-sm outline-none transition-colors duration-100 focus-visible:ring-[3px]",
37
+ "group/item [a]:hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-ring/50 [a]:transition-colors flex flex-wrap items-center rounded-[var(--radius)] border border-transparent text-sm outline-none transition-colors duration-100 focus-visible:ring-[3px]",
38
38
  {
39
39
  variants: {
40
40
  variant: {
@@ -4,6 +4,15 @@
4
4
  * Compatible with Tailwind CSS v4
5
5
  */
6
6
 
7
+ /* Radius scale — theme-independent, shared by light and dark */
8
+ :root {
9
+ --radius: 0.625rem;
10
+ --radius-sm: 0.375rem;
11
+ --radius-popover: 0.75rem;
12
+ --radius-dialog: 1.5rem;
13
+ --radius-tooltip: 0.375rem;
14
+ }
15
+
7
16
  /* Base element styles */
8
17
  * {
9
18
  border-color: hsl(var(--border));
@@ -37,6 +37,7 @@
37
37
  --border: 0 0% 15%;
38
38
  --input: 0 0% 15%;
39
39
  --ring: 189 100% 50%;
40
+ --shadow-card: none;
40
41
 
41
42
  /* Code surface — see light.css for the rationale. On dark we want
42
43
  * a panel slightly elevated from `--background` (4%) but below
@@ -11,7 +11,7 @@
11
11
 
12
12
  :root {
13
13
  /* Base colors - Clean white with neutral grays */
14
- --background: 0 0% 96%;
14
+ --background: 0 0% 94%;
15
15
  --foreground: 0 0% 9%;
16
16
  --card: 0 0% 100%;
17
17
  --card-foreground: 0 0% 9%;
@@ -32,7 +32,7 @@
32
32
  --border: 0 0% 90%;
33
33
  --input: 0 0% 90%;
34
34
  --ring: 192 90% 35%;
35
- --radius: 0.5rem;
35
+ --shadow-card: 0 1px 3px 0 rgb(0 0 0 / 0.06), 0 1px 2px -1px rgb(0 0 0 / 0.04);
36
36
 
37
37
  /* Code surface — used by markdown code fences, terminal blocks,
38
38
  * any "this is code, not prose" panel. Single source of truth so
@@ -51,7 +51,7 @@
51
51
  --code-inline-foreground: 0 0% 14%;
52
52
 
53
53
  /* Sidebar Light Theme - Subtle gray background */
54
- --sidebar-background: 0 0% 92%;
54
+ --sidebar-background: 0 0% 97%;
55
55
  --sidebar-foreground: 0 0% 9%;
56
56
  --sidebar-primary: 192 90% 35%;
57
57
  --sidebar-primary-foreground: 0 0% 100%;