sh-ui-cli 0.58.2 → 0.58.4

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 (104) hide show
  1. package/data/changelog/versions.json +35 -4
  2. package/data/registry/react/components/accordion/index.tailwind.tsx +1 -1
  3. package/data/registry/react/components/accordion/styles.css +1 -1
  4. package/data/registry/react/components/accordion/styles.module.css +1 -1
  5. package/data/registry/react/components/breadcrumb/index.tailwind.tsx +1 -1
  6. package/data/registry/react/components/breadcrumb/styles.css +1 -1
  7. package/data/registry/react/components/breadcrumb/styles.module.css +1 -1
  8. package/data/registry/react/components/button/index.tailwind.tsx +1 -1
  9. package/data/registry/react/components/button/styles.css +1 -2
  10. package/data/registry/react/components/button/styles.css.ts +1 -2
  11. package/data/registry/react/components/button/styles.module.css +1 -2
  12. package/data/registry/react/components/calendar/index.tailwind.tsx +3 -3
  13. package/data/registry/react/components/calendar/styles.css +3 -3
  14. package/data/registry/react/components/calendar/styles.module.css +3 -3
  15. package/data/registry/react/components/card/index.tailwind.tsx +1 -1
  16. package/data/registry/react/components/card/styles.css +1 -0
  17. package/data/registry/react/components/card/styles.css.ts +1 -0
  18. package/data/registry/react/components/card/styles.module.css +1 -0
  19. package/data/registry/react/components/carousel/index.tailwind.tsx +2 -2
  20. package/data/registry/react/components/carousel/styles.css +2 -2
  21. package/data/registry/react/components/carousel/styles.module.css +2 -2
  22. package/data/registry/react/components/checkbox/index.tailwind.tsx +1 -1
  23. package/data/registry/react/components/checkbox/styles.css +2 -2
  24. package/data/registry/react/components/checkbox/styles.module.css +2 -2
  25. package/data/registry/react/components/code-editor/index.tailwind.tsx +1 -1
  26. package/data/registry/react/components/code-editor/styles.css +1 -1
  27. package/data/registry/react/components/code-editor/styles.module.css +1 -1
  28. package/data/registry/react/components/code-panel/styles.css +1 -1
  29. package/data/registry/react/components/code-panel/styles.module.css +1 -1
  30. package/data/registry/react/components/color-picker/index.tailwind.tsx +2 -2
  31. package/data/registry/react/components/color-picker/styles.css +3 -3
  32. package/data/registry/react/components/color-picker/styles.module.css +3 -3
  33. package/data/registry/react/components/combobox/index.tailwind.tsx +1 -1
  34. package/data/registry/react/components/combobox/styles.css +1 -1
  35. package/data/registry/react/components/combobox/styles.module.css +1 -1
  36. package/data/registry/react/components/date-picker/index.tailwind.tsx +1 -1
  37. package/data/registry/react/components/date-picker/styles.css +2 -2
  38. package/data/registry/react/components/date-picker/styles.module.css +2 -2
  39. package/data/registry/react/components/dialog/index.tailwind.tsx +2 -2
  40. package/data/registry/react/components/dialog/styles.css +2 -2
  41. package/data/registry/react/components/dialog/styles.module.css +2 -2
  42. package/data/registry/react/components/dropdown-menu/index.tailwind.tsx +1 -1
  43. package/data/registry/react/components/dropdown-menu/styles.css +1 -1
  44. package/data/registry/react/components/dropdown-menu/styles.module.css +1 -1
  45. package/data/registry/react/components/file-upload/index.tailwind.tsx +3 -3
  46. package/data/registry/react/components/file-upload/styles.css +3 -3
  47. package/data/registry/react/components/file-upload/styles.module.css +3 -3
  48. package/data/registry/react/components/header/index.tailwind.tsx +3 -3
  49. package/data/registry/react/components/header/styles.css +3 -3
  50. package/data/registry/react/components/header/styles.module.css +3 -3
  51. package/data/registry/react/components/input/index.tailwind.tsx +3 -3
  52. package/data/registry/react/components/input/styles.css +5 -5
  53. package/data/registry/react/components/input/styles.css.ts +3 -3
  54. package/data/registry/react/components/input/styles.module.css +5 -5
  55. package/data/registry/react/components/menubar/styles.css +1 -1
  56. package/data/registry/react/components/menubar/styles.module.css +1 -1
  57. package/data/registry/react/components/numeric-input/index.tailwind.tsx +1 -1
  58. package/data/registry/react/components/numeric-input/styles.css +1 -1
  59. package/data/registry/react/components/numeric-input/styles.module.css +1 -1
  60. package/data/registry/react/components/page-toc/index.tailwind.tsx +1 -1
  61. package/data/registry/react/components/page-toc/styles.css +1 -1
  62. package/data/registry/react/components/page-toc/styles.module.css +1 -1
  63. package/data/registry/react/components/pagination/index.tailwind.tsx +1 -1
  64. package/data/registry/react/components/pagination/styles.css +1 -1
  65. package/data/registry/react/components/pagination/styles.module.css +1 -1
  66. package/data/registry/react/components/popover/index.tailwind.tsx +1 -1
  67. package/data/registry/react/components/popover/styles.css +1 -1
  68. package/data/registry/react/components/popover/styles.module.css +1 -1
  69. package/data/registry/react/components/radio/index.tailwind.tsx +1 -1
  70. package/data/registry/react/components/radio/styles.css +2 -2
  71. package/data/registry/react/components/radio/styles.module.css +2 -2
  72. package/data/registry/react/components/rich-text-editor/index.tailwind.tsx +2 -2
  73. package/data/registry/react/components/rich-text-editor/styles.css +2 -2
  74. package/data/registry/react/components/rich-text-editor/styles.module.css +2 -2
  75. package/data/registry/react/components/select/index.tailwind.tsx +1 -1
  76. package/data/registry/react/components/select/styles.css +2 -2
  77. package/data/registry/react/components/select/styles.module.css +2 -2
  78. package/data/registry/react/components/sidebar/index.tailwind.tsx +2 -2
  79. package/data/registry/react/components/sidebar/styles.css +2 -2
  80. package/data/registry/react/components/sidebar/styles.module.css +2 -2
  81. package/data/registry/react/components/slider/index.tailwind.tsx +1 -1
  82. package/data/registry/react/components/slider/styles.css +1 -1
  83. package/data/registry/react/components/slider/styles.module.css +1 -1
  84. package/data/registry/react/components/switch/index.tailwind.tsx +1 -1
  85. package/data/registry/react/components/switch/styles.css +1 -1
  86. package/data/registry/react/components/switch/styles.module.css +1 -1
  87. package/data/registry/react/components/tabs/index.tailwind.tsx +2 -2
  88. package/data/registry/react/components/tabs/styles.css +2 -2
  89. package/data/registry/react/components/tabs/styles.module.css +2 -2
  90. package/data/registry/react/components/textarea/index.tailwind.tsx +1 -1
  91. package/data/registry/react/components/textarea/styles.css +2 -2
  92. package/data/registry/react/components/textarea/styles.module.css +2 -2
  93. package/data/registry/react/components/toast/index.tailwind.tsx +1 -1
  94. package/data/registry/react/components/toast/styles.css +1 -1
  95. package/data/registry/react/components/toast/styles.module.css +1 -1
  96. package/data/registry/react/components/toggle/index.tailwind.tsx +1 -1
  97. package/data/registry/react/components/toggle/styles.css +1 -1
  98. package/data/registry/react/components/toggle/styles.module.css +1 -1
  99. package/package.json +1 -1
  100. package/templates/nextjs-standalone/_arch/flat/lib/styles/tokens.css +1 -0
  101. package/templates/nextjs-standalone/_arch/fsd/src/shared/styles/tokens.css +1 -0
  102. package/templates/nextjs-standalone/app/globals.css +1 -0
  103. package/templates/ui-app-template/src/styles/globals.css +1 -0
  104. package/templates/ui-app-template/src/styles/tokens.css +1 -0
@@ -233,7 +233,7 @@ export function SidebarTrigger({ className, onClick, ...props }: SidebarTriggerP
233
233
  <button
234
234
  type="button"
235
235
  aria-label="Toggle Sidebar"
236
- className={cn("inline-flex items-center justify-center w-8 h-8 border border-transparent bg-transparent text-foreground-muted rounded-[calc(var(--radius)-2px)] cursor-pointer transition-[background-color,color,border-color] duration-[var(--duration-fast)] hover:bg-[var(--sidebar-accent)] hover:text-foreground focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 motion-reduce:transition-none",
236
+ className={cn("inline-flex items-center justify-center w-8 h-8 border border-transparent bg-transparent text-foreground-muted rounded-[calc(var(--radius)-2px)] cursor-pointer transition-[background-color,color,border-color] duration-[var(--duration-fast)] hover:bg-[var(--sidebar-accent)] hover:text-foreground focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 motion-reduce:transition-none",
237
237
  className)}
238
238
  onClick={(e) => { onClick?.(e); toggleSidebar(); }}
239
239
  {...props}
@@ -356,7 +356,7 @@ export interface SidebarMenuButtonProps extends React.ButtonHTMLAttributes<HTMLB
356
356
  }
357
357
 
358
358
  const menuButtonBase =
359
- "flex w-full items-center gap-[var(--space-2)] p-[var(--space-2)] text-left text-[length:var(--text-sm)] text-[var(--sidebar-fg)] bg-transparent border-none rounded-[calc(var(--radius)-2px)] cursor-pointer transition-[background-color,color] duration-[var(--duration-fast)] no-underline font-[inherit] leading-snug [&>svg]:w-4 [&>svg]:h-4 [&>svg]:shrink-0 [&>span]:flex-1 [&>span]:min-w-0 [&>span]:overflow-hidden [&>span]:[text-overflow:ellipsis] [&>span]:whitespace-nowrap hover:bg-[var(--sidebar-accent)] hover:text-[var(--sidebar-accent-fg)] focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:[outline-offset:-2px] data-[active]:bg-primary data-[active]:text-primary-foreground data-[active]:font-semibold data-[active]:hover:bg-primary-hover disabled:opacity-[var(--opacity-disabled)] disabled:pointer-events-none aria-disabled:opacity-[var(--opacity-disabled)] aria-disabled:pointer-events-none [[data-state=collapsed][data-collapsible=icon]_&]:justify-center [[data-state=collapsed][data-collapsible=icon]_&]:p-[var(--space-2)] [[data-state=collapsed][data-collapsible=icon]_&>span]:hidden motion-reduce:transition-none";
359
+ "flex w-full items-center gap-[var(--space-2)] p-[var(--space-2)] text-left text-[length:var(--text-sm)] text-[var(--sidebar-fg)] bg-transparent border-none rounded-[calc(var(--radius)-2px)] cursor-pointer transition-[background-color,color] duration-[var(--duration-fast)] no-underline font-[inherit] leading-snug [&>svg]:w-4 [&>svg]:h-4 [&>svg]:shrink-0 [&>span]:flex-1 [&>span]:min-w-0 [&>span]:overflow-hidden [&>span]:[text-overflow:ellipsis] [&>span]:whitespace-nowrap hover:bg-[var(--sidebar-accent)] hover:text-[var(--sidebar-accent-fg)] focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:[outline-offset:-2px] data-[active]:bg-primary data-[active]:text-primary-foreground data-[active]:font-semibold data-[active]:hover:bg-primary-hover disabled:opacity-[var(--opacity-disabled)] disabled:pointer-events-none aria-disabled:opacity-[var(--opacity-disabled)] aria-disabled:pointer-events-none [[data-state=collapsed][data-collapsible=icon]_&]:justify-center [[data-state=collapsed][data-collapsible=icon]_&]:p-[var(--space-2)] [[data-state=collapsed][data-collapsible=icon]_&>span]:hidden motion-reduce:transition-none";
360
360
 
361
361
  const menuButtonSize = {
362
362
  sm: "h-7 py-[var(--space-1)] px-[var(--space-2)] text-[0.8125rem]",
@@ -163,7 +163,7 @@
163
163
  color: var(--foreground);
164
164
  }
165
165
  .sh-ui-sidebar__trigger:focus-visible {
166
- outline: var(--border-width-strong) solid var(--foreground);
166
+ outline: var(--border-width-strong) solid var(--ring);
167
167
  outline-offset: 2px;
168
168
  }
169
169
 
@@ -364,7 +364,7 @@
364
364
  color: var(--sidebar-accent-fg);
365
365
  }
366
366
  .sh-ui-sidebar__menu-button:focus-visible {
367
- outline: var(--border-width-strong) solid var(--foreground);
367
+ outline: var(--border-width-strong) solid var(--ring);
368
368
  outline-offset: -2px;
369
369
  }
370
370
  .sh-ui-sidebar__menu-button[data-active] {
@@ -163,7 +163,7 @@
163
163
  color: var(--foreground);
164
164
  }
165
165
  .sidebar__trigger:focus-visible {
166
- outline: var(--border-width-strong) solid var(--foreground);
166
+ outline: var(--border-width-strong) solid var(--ring);
167
167
  outline-offset: 2px;
168
168
  }
169
169
 
@@ -364,7 +364,7 @@
364
364
  color: var(--sidebar-accent-fg);
365
365
  }
366
366
  .sidebar__menu-button:focus-visible {
367
- outline: var(--border-width-strong) solid var(--foreground);
367
+ outline: var(--border-width-strong) solid var(--ring);
368
368
  outline-offset: -2px;
369
369
  }
370
370
  .sidebar__menu-button[data-active] {
@@ -242,7 +242,7 @@ export const SliderThumb = React.forwardRef<
242
242
  aria-disabled={disabled || undefined}
243
243
  onKeyDown={onKeyDown}
244
244
  className={cn(
245
- "absolute top-1/2 w-4 h-4 -ml-2 -translate-y-1/2 bg-background border-2 border-primary rounded-full shadow-[0_1px_2px_rgba(0,0,0,0.1)] cursor-grab transition-transform duration-[80ms] active:cursor-grabbing active:scale-110 active:-translate-y-1/2 focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 [@media(hover:none)_and_(pointer:coarse)]:w-5 [@media(hover:none)_and_(pointer:coarse)]:h-5 [@media(hover:none)_and_(pointer:coarse)]:-ml-2.5",
245
+ "absolute top-1/2 w-4 h-4 -ml-2 -translate-y-1/2 bg-background border-2 border-primary rounded-full shadow-[0_1px_2px_rgba(0,0,0,0.1)] cursor-grab transition-transform duration-[80ms] active:cursor-grabbing active:scale-110 active:-translate-y-1/2 focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 [@media(hover:none)_and_(pointer:coarse)]:w-5 [@media(hover:none)_and_(pointer:coarse)]:h-5 [@media(hover:none)_and_(pointer:coarse)]:-ml-2.5",
246
246
  className,
247
247
  )}
248
248
  style={{ left: percent, ...style }}
@@ -50,7 +50,7 @@
50
50
  transform: translateY(-50%) scale(1.1);
51
51
  }
52
52
  .sh-ui-slider__thumb:focus-visible {
53
- outline: var(--border-width-strong) solid var(--foreground);
53
+ outline: var(--border-width-strong) solid var(--ring);
54
54
  outline-offset: 2px;
55
55
  }
56
56
 
@@ -50,7 +50,7 @@
50
50
  transform: translateY(-50%) scale(1.1);
51
51
  }
52
52
  .slider__thumb:focus-visible {
53
- outline: var(--border-width-strong) solid var(--foreground);
53
+ outline: var(--border-width-strong) solid var(--ring);
54
54
  outline-offset: 2px;
55
55
  }
56
56
 
@@ -5,7 +5,7 @@ import { cva, type VariantProps } from "class-variance-authority";
5
5
 
6
6
  import { cn } from "@SH_UI_UTILS@";
7
7
  const switchRoot = cva(
8
- "inline-flex items-center border-none rounded-full bg-background-muted cursor-pointer shrink-0 p-0.5 transition-colors duration-150 hover:not-data-[disabled]:bg-border-strong focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 data-[checked]:bg-primary data-[checked]:hover:not-data-[disabled]:bg-primary-hover data-[disabled]:opacity-[var(--opacity-disabled)] data-[disabled]:cursor-not-allowed motion-reduce:transition-none",
8
+ "inline-flex items-center border-none rounded-full bg-background-muted cursor-pointer shrink-0 p-0.5 transition-colors duration-150 hover:not-data-[disabled]:bg-border-strong focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 data-[checked]:bg-primary data-[checked]:hover:not-data-[disabled]:bg-primary-hover data-[disabled]:opacity-[var(--opacity-disabled)] data-[disabled]:cursor-not-allowed motion-reduce:transition-none",
9
9
  {
10
10
  variants: {
11
11
  size: {
@@ -29,7 +29,7 @@
29
29
  }
30
30
 
31
31
  .sh-ui-switch:focus-visible {
32
- outline: var(--border-width-strong) solid var(--foreground);
32
+ outline: var(--border-width-strong) solid var(--ring);
33
33
  outline-offset: 2px;
34
34
  }
35
35
 
@@ -29,7 +29,7 @@
29
29
  }
30
30
 
31
31
  .switch:focus-visible {
32
- outline: var(--border-width-strong) solid var(--foreground);
32
+ outline: var(--border-width-strong) solid var(--ring);
33
33
  outline-offset: 2px;
34
34
  }
35
35
 
@@ -65,7 +65,7 @@ export const TabsTrigger = React.forwardRef<
65
65
  <BaseTabs.Tab
66
66
  ref={ref}
67
67
  className={cn(
68
- "relative z-[1] inline-flex items-center justify-center gap-1.5 py-[var(--space-2)] px-[var(--space-3)] bg-transparent text-foreground-muted border-0 text-[length:var(--text-sm)] font-medium leading-none cursor-pointer transition-[color,background-color] duration-[var(--duration-fast)] select-none whitespace-nowrap hover:not-disabled:not-data-[selected]:text-foreground focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 data-[selected]:text-foreground disabled:opacity-[var(--opacity-disabled)] disabled:cursor-not-allowed",
68
+ "relative z-[1] inline-flex items-center justify-center gap-1.5 py-[var(--space-2)] px-[var(--space-3)] bg-transparent text-foreground-muted border-0 text-[length:var(--text-sm)] font-medium leading-none cursor-pointer transition-[color,background-color] duration-[var(--duration-fast)] select-none whitespace-nowrap hover:not-disabled:not-data-[selected]:text-foreground focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 data-[selected]:text-foreground disabled:opacity-[var(--opacity-disabled)] disabled:cursor-not-allowed",
69
69
  triggerVariantClasses,
70
70
  className,
71
71
  )}
@@ -100,7 +100,7 @@ export const TabsContent = React.forwardRef<
100
100
  <BaseTabs.Panel
101
101
  ref={ref}
102
102
  className={cn(
103
- "outline-none focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 focus-visible:rounded-[var(--radius)]",
103
+ "outline-none focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 focus-visible:rounded-[var(--radius)]",
104
104
  className,
105
105
  )}
106
106
  {...props}
@@ -48,7 +48,7 @@
48
48
  }
49
49
 
50
50
  .sh-ui-tabs__trigger:focus-visible {
51
- outline: var(--border-width-strong) solid var(--foreground);
51
+ outline: var(--border-width-strong) solid var(--ring);
52
52
  outline-offset: 2px;
53
53
  }
54
54
 
@@ -77,7 +77,7 @@
77
77
  }
78
78
 
79
79
  .sh-ui-tabs__content:focus-visible {
80
- outline: var(--border-width-strong) solid var(--foreground);
80
+ outline: var(--border-width-strong) solid var(--ring);
81
81
  outline-offset: 2px;
82
82
  border-radius: var(--radius);
83
83
  }
@@ -48,7 +48,7 @@
48
48
  }
49
49
 
50
50
  .tabs__trigger:focus-visible {
51
- outline: var(--border-width-strong) solid var(--foreground);
51
+ outline: var(--border-width-strong) solid var(--ring);
52
52
  outline-offset: 2px;
53
53
  }
54
54
 
@@ -77,7 +77,7 @@
77
77
  }
78
78
 
79
79
  .tabs__content:focus-visible {
80
- outline: var(--border-width-strong) solid var(--foreground);
80
+ outline: var(--border-width-strong) solid var(--ring);
81
81
  outline-offset: 2px;
82
82
  border-radius: var(--radius);
83
83
  }
@@ -9,7 +9,7 @@ export const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
9
9
  <textarea
10
10
  ref={ref}
11
11
  className={cn(
12
- "block w-full min-h-20 px-[var(--space-3)] py-[var(--space-2)] bg-background text-foreground border border-border rounded-[var(--radius)] font-[inherit] text-[length:var(--text-sm)] leading-normal resize-y transition-[border-color,box-shadow] duration-[var(--duration-fast)] placeholder:text-foreground-subtle hover:not-disabled:not-focus:border-border-strong focus:outline-none focus:border-foreground focus:shadow-[0_0_0_1px_var(--foreground)] disabled:opacity-[var(--opacity-disabled)] disabled:cursor-not-allowed disabled:bg-background-subtle read-only:bg-background-subtle aria-[invalid=true]:border-danger aria-[invalid=true]:focus:shadow-[0_0_0_1px_var(--danger)] [@media(hover:none)_and_(pointer:coarse)]:text-[length:var(--text-base)]",
12
+ "block w-full min-h-20 px-[var(--space-3)] py-[var(--space-2)] bg-background text-foreground border border-border rounded-[var(--radius)] font-[inherit] text-[length:var(--text-sm)] leading-normal resize-y transition-[border-color,box-shadow] duration-[var(--duration-fast)] placeholder:text-foreground-subtle hover:not-disabled:not-focus:border-border-strong focus:outline-none focus:border-primary focus:shadow-[0_0_0_1px_var(--primary)] disabled:opacity-[var(--opacity-disabled)] disabled:cursor-not-allowed disabled:bg-background-subtle read-only:bg-background-subtle aria-[invalid=true]:border-danger aria-[invalid=true]:focus:shadow-[0_0_0_1px_var(--danger)] [@media(hover:none)_and_(pointer:coarse)]:text-[length:var(--text-base)]",
13
13
  className,
14
14
  )}
15
15
  {...props}
@@ -31,8 +31,8 @@
31
31
 
32
32
  .sh-ui-textarea:focus {
33
33
  outline: none;
34
- border-color: var(--foreground);
35
- box-shadow: 0 0 0 1px var(--foreground);
34
+ border-color: var(--primary);
35
+ box-shadow: 0 0 0 1px var(--primary);
36
36
  }
37
37
 
38
38
  .sh-ui-textarea:disabled {
@@ -31,8 +31,8 @@
31
31
 
32
32
  .textarea:focus {
33
33
  outline: none;
34
- border-color: var(--foreground);
35
- box-shadow: 0 0 0 1px var(--foreground);
34
+ border-color: var(--primary);
35
+ box-shadow: 0 0 0 1px var(--primary);
36
36
  }
37
37
 
38
38
  .textarea:disabled {
@@ -133,7 +133,7 @@ function ToastCard({ item, onDismiss }: { item: ToastItem; onDismiss: () => void
133
133
  )}
134
134
  <button
135
135
  type="button"
136
- className="absolute top-1.5 right-1.5 inline-flex items-center justify-center w-6 h-6 p-0 border-none rounded-[calc(var(--radius)-2px)] bg-transparent text-foreground-muted text-[length:var(--text-sm)] leading-none cursor-pointer transition-[background-color,color] duration-[var(--duration-fast)] hover:bg-background-muted hover:text-foreground focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 motion-reduce:transition-none"
136
+ className="absolute top-1.5 right-1.5 inline-flex items-center justify-center w-6 h-6 p-0 border-none rounded-[calc(var(--radius)-2px)] bg-transparent text-foreground-muted text-[length:var(--text-sm)] leading-none cursor-pointer transition-[background-color,color] duration-[var(--duration-fast)] hover:bg-background-muted hover:text-foreground focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 motion-reduce:transition-none"
137
137
  onClick={() => setExiting(true)}
138
138
  aria-label="닫기"
139
139
  >
@@ -276,7 +276,7 @@
276
276
  }
277
277
 
278
278
  .sh-ui-toast__close:focus-visible {
279
- outline: var(--border-width-strong) solid var(--foreground);
279
+ outline: var(--border-width-strong) solid var(--ring);
280
280
  outline-offset: 2px;
281
281
  }
282
282
 
@@ -276,7 +276,7 @@
276
276
  }
277
277
 
278
278
  .toast__close:focus-visible {
279
- outline: var(--border-width-strong) solid var(--foreground);
279
+ outline: var(--border-width-strong) solid var(--ring);
280
280
  outline-offset: 2px;
281
281
  }
282
282
 
@@ -8,7 +8,7 @@ import { cva, type VariantProps } from "class-variance-authority";
8
8
 
9
9
  import { cn } from "@SH_UI_UTILS@";
10
10
  const toggleVariants = cva(
11
- "inline-flex items-center justify-center gap-1.5 border border-transparent rounded-[var(--radius)] font-medium leading-none cursor-pointer text-foreground-muted bg-transparent transition-[background-color,color,border-color] duration-[var(--duration-fast)] select-none focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 disabled:opacity-[var(--opacity-disabled)] disabled:pointer-events-none data-[pressed]:bg-background-muted data-[pressed]:text-foreground motion-reduce:transition-none",
11
+ "inline-flex items-center justify-center gap-1.5 border border-transparent rounded-[var(--radius)] font-medium leading-none cursor-pointer text-foreground-muted bg-transparent transition-[background-color,color,border-color] duration-[var(--duration-fast)] select-none focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 disabled:opacity-[var(--opacity-disabled)] disabled:pointer-events-none data-[pressed]:bg-background-muted data-[pressed]:text-foreground motion-reduce:transition-none",
12
12
  {
13
13
  variants: {
14
14
  variant: {
@@ -56,7 +56,7 @@
56
56
 
57
57
  /* focus */
58
58
  .sh-ui-toggle:focus-visible {
59
- outline: var(--border-width-strong) solid var(--foreground);
59
+ outline: var(--border-width-strong) solid var(--ring);
60
60
  outline-offset: 2px;
61
61
  }
62
62
 
@@ -56,7 +56,7 @@
56
56
 
57
57
  /* focus */
58
58
  .toggle:focus-visible {
59
- outline: var(--border-width-strong) solid var(--foreground);
59
+ outline: var(--border-width-strong) solid var(--ring);
60
60
  outline-offset: 2px;
61
61
  }
62
62
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sh-ui-cli",
3
- "version": "0.58.2",
3
+ "version": "0.58.4",
4
4
  "description": "sh-ui CLI — 프로젝트 스캐폴드(create) + 컴포넌트 추가(add/list/remove) + IDE-내 AI용 MCP 서버",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -16,6 +16,7 @@
16
16
  --primary: #171717;
17
17
  --primary-foreground: #FAFAFA;
18
18
  --primary-hover: #262626;
19
+ --ring: color-mix(in srgb, var(--primary) 50%, transparent);
19
20
  --danger: #DC2626;
20
21
  --danger-foreground: #FFFFFF;
21
22
  }
@@ -16,6 +16,7 @@
16
16
  --primary: #171717;
17
17
  --primary-foreground: #FAFAFA;
18
18
  --primary-hover: #262626;
19
+ --ring: color-mix(in srgb, var(--primary) 50%, transparent);
19
20
  --danger: #DC2626;
20
21
  --danger-foreground: #FFFFFF;
21
22
  }
@@ -21,6 +21,7 @@
21
21
  --color-primary: var(--primary);
22
22
  --color-primary-foreground: var(--primary-foreground);
23
23
  --color-primary-hover: var(--primary-hover);
24
+ --color-ring: var(--ring);
24
25
  --color-danger: var(--danger);
25
26
  --color-danger-foreground: var(--danger-foreground);
26
27
  --color-success: var(--success);
@@ -25,6 +25,7 @@
25
25
  --color-primary: var(--primary);
26
26
  --color-primary-foreground: var(--primary-foreground);
27
27
  --color-primary-hover: var(--primary-hover);
28
+ --color-ring: var(--ring);
28
29
  --color-danger: var(--danger);
29
30
  --color-danger-foreground: var(--danger-foreground);
30
31
  --color-success: var(--success);
@@ -16,6 +16,7 @@
16
16
  --primary: #171717;
17
17
  --primary-foreground: #FAFAFA;
18
18
  --primary-hover: #262626;
19
+ --ring: color-mix(in srgb, var(--primary) 50%, transparent);
19
20
  --danger: #DC2626;
20
21
  --danger-foreground: #FFFFFF;
21
22
  }