sh-ui-cli 0.58.2 → 0.58.3

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 (95) hide show
  1. package/data/changelog/versions.json +22 -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 +1 -1
  24. package/data/registry/react/components/checkbox/styles.module.css +1 -1
  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 +1 -1
  31. package/data/registry/react/components/color-picker/styles.css +1 -1
  32. package/data/registry/react/components/color-picker/styles.module.css +1 -1
  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/dialog/index.tailwind.tsx +2 -2
  37. package/data/registry/react/components/dialog/styles.css +2 -2
  38. package/data/registry/react/components/dialog/styles.module.css +2 -2
  39. package/data/registry/react/components/dropdown-menu/index.tailwind.tsx +1 -1
  40. package/data/registry/react/components/dropdown-menu/styles.css +1 -1
  41. package/data/registry/react/components/dropdown-menu/styles.module.css +1 -1
  42. package/data/registry/react/components/file-upload/index.tailwind.tsx +3 -3
  43. package/data/registry/react/components/file-upload/styles.css +3 -3
  44. package/data/registry/react/components/file-upload/styles.module.css +3 -3
  45. package/data/registry/react/components/header/index.tailwind.tsx +3 -3
  46. package/data/registry/react/components/header/styles.css +3 -3
  47. package/data/registry/react/components/header/styles.module.css +3 -3
  48. package/data/registry/react/components/input/index.tailwind.tsx +1 -1
  49. package/data/registry/react/components/input/styles.css +1 -1
  50. package/data/registry/react/components/input/styles.css.ts +1 -1
  51. package/data/registry/react/components/input/styles.module.css +1 -1
  52. package/data/registry/react/components/menubar/styles.css +1 -1
  53. package/data/registry/react/components/menubar/styles.module.css +1 -1
  54. package/data/registry/react/components/page-toc/index.tailwind.tsx +1 -1
  55. package/data/registry/react/components/page-toc/styles.css +1 -1
  56. package/data/registry/react/components/page-toc/styles.module.css +1 -1
  57. package/data/registry/react/components/pagination/index.tailwind.tsx +1 -1
  58. package/data/registry/react/components/pagination/styles.css +1 -1
  59. package/data/registry/react/components/pagination/styles.module.css +1 -1
  60. package/data/registry/react/components/popover/index.tailwind.tsx +1 -1
  61. package/data/registry/react/components/popover/styles.css +1 -1
  62. package/data/registry/react/components/popover/styles.module.css +1 -1
  63. package/data/registry/react/components/radio/index.tailwind.tsx +1 -1
  64. package/data/registry/react/components/radio/styles.css +1 -1
  65. package/data/registry/react/components/radio/styles.module.css +1 -1
  66. package/data/registry/react/components/rich-text-editor/index.tailwind.tsx +2 -2
  67. package/data/registry/react/components/rich-text-editor/styles.css +2 -2
  68. package/data/registry/react/components/rich-text-editor/styles.module.css +2 -2
  69. package/data/registry/react/components/select/index.tailwind.tsx +1 -1
  70. package/data/registry/react/components/select/styles.css +2 -2
  71. package/data/registry/react/components/select/styles.module.css +2 -2
  72. package/data/registry/react/components/sidebar/index.tailwind.tsx +2 -2
  73. package/data/registry/react/components/sidebar/styles.css +2 -2
  74. package/data/registry/react/components/sidebar/styles.module.css +2 -2
  75. package/data/registry/react/components/slider/index.tailwind.tsx +1 -1
  76. package/data/registry/react/components/slider/styles.css +1 -1
  77. package/data/registry/react/components/slider/styles.module.css +1 -1
  78. package/data/registry/react/components/switch/index.tailwind.tsx +1 -1
  79. package/data/registry/react/components/switch/styles.css +1 -1
  80. package/data/registry/react/components/switch/styles.module.css +1 -1
  81. package/data/registry/react/components/tabs/index.tailwind.tsx +2 -2
  82. package/data/registry/react/components/tabs/styles.css +2 -2
  83. package/data/registry/react/components/tabs/styles.module.css +2 -2
  84. package/data/registry/react/components/toast/index.tailwind.tsx +1 -1
  85. package/data/registry/react/components/toast/styles.css +1 -1
  86. package/data/registry/react/components/toast/styles.module.css +1 -1
  87. package/data/registry/react/components/toggle/index.tailwind.tsx +1 -1
  88. package/data/registry/react/components/toggle/styles.css +1 -1
  89. package/data/registry/react/components/toggle/styles.module.css +1 -1
  90. package/package.json +1 -1
  91. package/templates/nextjs-standalone/_arch/flat/lib/styles/tokens.css +1 -0
  92. package/templates/nextjs-standalone/_arch/fsd/src/shared/styles/tokens.css +1 -0
  93. package/templates/nextjs-standalone/app/globals.css +1 -0
  94. package/templates/ui-app-template/src/styles/globals.css +1 -0
  95. package/templates/ui-app-template/src/styles/tokens.css +1 -0
@@ -29,7 +29,7 @@
29
29
  }
30
30
 
31
31
  .sh-ui-file-upload__dropzone: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
  border-color: var(--foreground);
35
35
  }
@@ -93,7 +93,7 @@
93
93
  border-color: var(--border-strong);
94
94
  }
95
95
  .sh-ui-file-upload__trigger:focus-visible {
96
- outline: var(--border-width-strong) solid var(--foreground);
96
+ outline: var(--border-width-strong) solid var(--ring);
97
97
  outline-offset: 2px;
98
98
  }
99
99
  .sh-ui-file-upload__trigger:disabled {
@@ -161,7 +161,7 @@
161
161
  background: var(--background-muted);
162
162
  }
163
163
  .sh-ui-file-upload__remove:focus-visible {
164
- outline: var(--border-width-strong) solid var(--foreground);
164
+ outline: var(--border-width-strong) solid var(--ring);
165
165
  outline-offset: 2px;
166
166
  }
167
167
  .sh-ui-file-upload__remove:disabled {
@@ -29,7 +29,7 @@
29
29
  }
30
30
 
31
31
  .file-upload__dropzone: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
  border-color: var(--foreground);
35
35
  }
@@ -93,7 +93,7 @@
93
93
  border-color: var(--border-strong);
94
94
  }
95
95
  .file-upload__trigger:focus-visible {
96
- outline: var(--border-width-strong) solid var(--foreground);
96
+ outline: var(--border-width-strong) solid var(--ring);
97
97
  outline-offset: 2px;
98
98
  }
99
99
  .file-upload__trigger:disabled {
@@ -161,7 +161,7 @@
161
161
  background: var(--background-muted);
162
162
  }
163
163
  .file-upload__remove:focus-visible {
164
- outline: var(--border-width-strong) solid var(--foreground);
164
+ outline: var(--border-width-strong) solid var(--ring);
165
165
  outline-offset: 2px;
166
166
  }
167
167
  .file-upload__remove:disabled {
@@ -197,7 +197,7 @@ export const HeaderTrigger = React.forwardRef<HTMLButtonElement, React.ButtonHTM
197
197
  ref={setRefs}
198
198
  type="button"
199
199
  className={cn(
200
- "hidden items-center justify-center w-9 h-9 p-0 bg-transparent border-0 text-foreground rounded-[calc(var(--radius)-2px)] cursor-pointer transition-[background-color] duration-[var(--duration-fast)] hover:bg-[var(--sh-ui-header-hover-bg)] focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 max-md:inline-flex max-md:order-[-1]",
200
+ "hidden items-center justify-center w-9 h-9 p-0 bg-transparent border-0 text-foreground rounded-[calc(var(--radius)-2px)] cursor-pointer transition-[background-color] duration-[var(--duration-fast)] hover:bg-[var(--sh-ui-header-hover-bg)] focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 max-md:inline-flex max-md:order-[-1]",
201
201
  className,
202
202
  )}
203
203
  aria-label={open ? "메뉴 닫기" : "메뉴 열기"}
@@ -292,7 +292,7 @@ export const HeaderItem = React.forwardRef<
292
292
  ref={ref}
293
293
  href={href}
294
294
  className={cn(
295
- "inline-flex items-center gap-[var(--space-1)] py-[var(--space-2)] px-[var(--space-3)] text-[length:var(--text-sm)] font-medium text-foreground-muted no-underline bg-transparent border-0 rounded-[calc(var(--radius)-2px)] cursor-pointer whitespace-nowrap transition-[color,background-color] duration-[var(--duration-fast)] hover:text-foreground hover:bg-[var(--sh-ui-header-hover-bg)] data-[active]:text-foreground data-[active]:font-semibold focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 motion-reduce:transition-none max-md:py-[var(--space-3)] max-md:px-[var(--space-3)]",
295
+ "inline-flex items-center gap-[var(--space-1)] py-[var(--space-2)] px-[var(--space-3)] text-[length:var(--text-sm)] font-medium text-foreground-muted no-underline bg-transparent border-0 rounded-[calc(var(--radius)-2px)] cursor-pointer whitespace-nowrap transition-[color,background-color] duration-[var(--duration-fast)] hover:text-foreground hover:bg-[var(--sh-ui-header-hover-bg)] data-[active]:text-foreground data-[active]:font-semibold focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 motion-reduce:transition-none max-md:py-[var(--space-3)] max-md:px-[var(--space-3)]",
296
296
  className,
297
297
  )}
298
298
  data-active={computedActive ? "" : undefined}
@@ -437,7 +437,7 @@ export const HeaderMenuTrigger = React.forwardRef<HTMLButtonElement, React.Butto
437
437
  aria-controls={contentId}
438
438
  data-open={open ? "" : undefined}
439
439
  className={cn(
440
- "inline-flex items-center gap-[var(--space-1)] py-[var(--space-2)] px-[var(--space-3)] text-[length:var(--text-sm)] font-medium text-foreground-muted bg-transparent border-0 rounded-[calc(var(--radius)-2px)] cursor-pointer whitespace-nowrap transition-[color,background-color] duration-[var(--duration-fast)] hover:text-foreground hover:bg-[var(--sh-ui-header-hover-bg)] data-[open]:text-foreground data-[open]:bg-[var(--sh-ui-header-hover-bg)] focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 motion-reduce:transition-none",
440
+ "inline-flex items-center gap-[var(--space-1)] py-[var(--space-2)] px-[var(--space-3)] text-[length:var(--text-sm)] font-medium text-foreground-muted bg-transparent border-0 rounded-[calc(var(--radius)-2px)] cursor-pointer whitespace-nowrap transition-[color,background-color] duration-[var(--duration-fast)] hover:text-foreground hover:bg-[var(--sh-ui-header-hover-bg)] data-[open]:text-foreground data-[open]:bg-[var(--sh-ui-header-hover-bg)] focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 motion-reduce:transition-none",
441
441
  location === "drawer" && "max-md:justify-between max-md:w-full max-md:py-[var(--space-3)] max-md:px-[var(--space-3)]",
442
442
  className,
443
443
  )}
@@ -91,7 +91,7 @@
91
91
  background: var(--sh-ui-header-hover-bg);
92
92
  }
93
93
  .sh-ui-header__trigger:focus-visible {
94
- outline: var(--border-width-strong) solid var(--foreground);
94
+ outline: var(--border-width-strong) solid var(--ring);
95
95
  outline-offset: 2px;
96
96
  }
97
97
 
@@ -135,7 +135,7 @@
135
135
  font-weight: var(--weight-semibold);
136
136
  }
137
137
  .sh-ui-header__item:focus-visible {
138
- outline: var(--border-width-strong) solid var(--foreground);
138
+ outline: var(--border-width-strong) solid var(--ring);
139
139
  outline-offset: 2px;
140
140
  }
141
141
 
@@ -216,7 +216,7 @@
216
216
  background: var(--sh-ui-header-hover-bg);
217
217
  }
218
218
  .sh-ui-header__menu-trigger:focus-visible {
219
- outline: var(--border-width-strong) solid var(--foreground);
219
+ outline: var(--border-width-strong) solid var(--ring);
220
220
  outline-offset: 2px;
221
221
  }
222
222
  .sh-ui-header__chevron {
@@ -91,7 +91,7 @@
91
91
  background: var(--sh-ui-header-hover-bg);
92
92
  }
93
93
  .header__trigger:focus-visible {
94
- outline: var(--border-width-strong) solid var(--foreground);
94
+ outline: var(--border-width-strong) solid var(--ring);
95
95
  outline-offset: 2px;
96
96
  }
97
97
 
@@ -135,7 +135,7 @@
135
135
  font-weight: var(--weight-semibold);
136
136
  }
137
137
  .header__item:focus-visible {
138
- outline: var(--border-width-strong) solid var(--foreground);
138
+ outline: var(--border-width-strong) solid var(--ring);
139
139
  outline-offset: 2px;
140
140
  }
141
141
 
@@ -216,7 +216,7 @@
216
216
  background: var(--sh-ui-header-hover-bg);
217
217
  }
218
218
  .header__menu-trigger:focus-visible {
219
- outline: var(--border-width-strong) solid var(--foreground);
219
+ outline: var(--border-width-strong) solid var(--ring);
220
220
  outline-offset: 2px;
221
221
  }
222
222
  .header__chevron {
@@ -149,7 +149,7 @@ Input.displayName = "Input";
149
149
  /* ───────── PasswordInput ───────── */
150
150
 
151
151
  const passwordToggleClasses =
152
- "inline-flex items-center justify-center w-8 h-8 p-0 bg-transparent border-none rounded-[calc(var(--radius)-2px)] text-foreground-muted cursor-pointer transition-[color,background-color] duration-[var(--duration-fast)] hover:text-foreground hover:bg-background-muted focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2";
152
+ "inline-flex items-center justify-center w-8 h-8 p-0 bg-transparent border-none rounded-[calc(var(--radius)-2px)] text-foreground-muted cursor-pointer transition-[color,background-color] duration-[var(--duration-fast)] hover:text-foreground hover:bg-background-muted focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2";
153
153
 
154
154
  function EyeIcon() {
155
155
  return (
@@ -102,7 +102,7 @@
102
102
  }
103
103
  .sh-ui-input__toggle:hover { color: var(--foreground); background: var(--background-muted); }
104
104
  .sh-ui-input__toggle:focus-visible {
105
- outline: var(--border-width-strong) solid var(--foreground);
105
+ outline: var(--border-width-strong) solid var(--ring);
106
106
  outline-offset: 2px;
107
107
  }
108
108
 
@@ -137,7 +137,7 @@ export const toggle = style({
137
137
  background: "var(--background-muted)",
138
138
  },
139
139
  "&:focus-visible": {
140
- outline: "var(--border-width-strong) solid var(--foreground)",
140
+ outline: "var(--border-width-strong) solid var(--ring)",
141
141
  outlineOffset: "2px",
142
142
  },
143
143
  },
@@ -100,7 +100,7 @@
100
100
  }
101
101
  .toggle:hover { color: var(--foreground); background: var(--background-muted); }
102
102
  .toggle:focus-visible {
103
- outline: var(--border-width-strong) solid var(--foreground);
103
+ outline: var(--border-width-strong) solid var(--ring);
104
104
  outline-offset: 2px;
105
105
  }
106
106
 
@@ -34,7 +34,7 @@
34
34
  }
35
35
 
36
36
  .sh-ui-menubar .sh-ui-dm__trigger:focus-visible {
37
- outline: var(--border-width-strong) solid var(--foreground);
37
+ outline: var(--border-width-strong) solid var(--ring);
38
38
  outline-offset: -1px;
39
39
  }
40
40
 
@@ -34,7 +34,7 @@
34
34
  }
35
35
 
36
36
  .menubar .dm__trigger:focus-visible {
37
- outline: var(--border-width-strong) solid var(--foreground);
37
+ outline: var(--border-width-strong) solid var(--ring);
38
38
  outline-offset: -1px;
39
39
  }
40
40
 
@@ -32,7 +32,7 @@ const cx = (...args: (string | undefined | false | null)[]) =>
32
32
  args.filter(Boolean).join(" ");
33
33
 
34
34
  const linkBase =
35
- "block px-2 py-1 rounded-[calc(var(--radius)-4px)] text-foreground-muted no-underline leading-snug transition-[color,background-color] duration-[var(--duration-fast)] hover:text-foreground hover:bg-background-subtle focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 data-[active=true]:text-foreground data-[active=true]:font-semibold data-[active=true]:bg-background-subtle motion-reduce:transition-none";
35
+ "block px-2 py-1 rounded-[calc(var(--radius)-4px)] text-foreground-muted no-underline leading-snug transition-[color,background-color] duration-[var(--duration-fast)] hover:text-foreground hover:bg-background-subtle focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 data-[active=true]:text-foreground data-[active=true]:font-semibold data-[active=true]:bg-background-subtle motion-reduce:transition-none";
36
36
 
37
37
  export function PageTOC({
38
38
  containerSelector = "main",
@@ -59,7 +59,7 @@
59
59
  background: var(--background-subtle);
60
60
  }
61
61
  .sh-ui-page-toc__link:focus-visible {
62
- outline: var(--border-width-strong) solid var(--foreground);
62
+ outline: var(--border-width-strong) solid var(--ring);
63
63
  outline-offset: 2px;
64
64
  }
65
65
  .sh-ui-page-toc__link[data-active="true"] {
@@ -59,7 +59,7 @@
59
59
  background: var(--background-subtle);
60
60
  }
61
61
  .page-toc__link:focus-visible {
62
- outline: var(--border-width-strong) solid var(--foreground);
62
+ outline: var(--border-width-strong) solid var(--ring);
63
63
  outline-offset: 2px;
64
64
  }
65
65
  .page-toc__link[data-active="true"] {
@@ -34,7 +34,7 @@ export const PaginationItem = React.forwardRef<HTMLLIElement, React.LiHTMLAttrib
34
34
  );
35
35
 
36
36
  const linkBase =
37
- "inline-flex items-center justify-center gap-1.5 min-w-9 h-9 px-3 rounded-[calc(var(--radius)-2px)] border border-transparent bg-transparent text-foreground no-underline transition-[background-color,border-color,color] duration-[var(--duration-fast)] cursor-pointer select-none hover:bg-background-muted focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 data-[active]:bg-foreground data-[active]:text-background data-[active]:font-medium data-[active]:hover:opacity-90 aria-disabled:pointer-events-none aria-disabled:opacity-45 data-[disabled]:pointer-events-none data-[disabled]:opacity-45 data-[size=sm]:min-w-8 data-[size=sm]:h-8 data-[size=sm]:px-2 motion-reduce:transition-none";
37
+ "inline-flex items-center justify-center gap-1.5 min-w-9 h-9 px-3 rounded-[calc(var(--radius)-2px)] border border-transparent bg-transparent text-foreground no-underline transition-[background-color,border-color,color] duration-[var(--duration-fast)] cursor-pointer select-none hover:bg-background-muted focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 data-[active]:bg-foreground data-[active]:text-background data-[active]:font-medium data-[active]:hover:opacity-90 aria-disabled:pointer-events-none aria-disabled:opacity-45 data-[disabled]:pointer-events-none data-[disabled]:opacity-45 data-[size=sm]:min-w-8 data-[size=sm]:h-8 data-[size=sm]:px-2 motion-reduce:transition-none";
38
38
 
39
39
  export interface PaginationLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
40
40
  isActive?: boolean;
@@ -52,7 +52,7 @@
52
52
  }
53
53
 
54
54
  .sh-ui-pagination__link:focus-visible {
55
- outline: var(--border-width-strong) solid var(--foreground);
55
+ outline: var(--border-width-strong) solid var(--ring);
56
56
  outline-offset: 2px;
57
57
  }
58
58
 
@@ -52,7 +52,7 @@
52
52
  }
53
53
 
54
54
  .pagination__link:focus-visible {
55
- outline: var(--border-width-strong) solid var(--foreground);
55
+ outline: var(--border-width-strong) solid var(--ring);
56
56
  outline-offset: 2px;
57
57
  }
58
58
 
@@ -34,7 +34,7 @@ export const PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentPro
34
34
  <BasePopover.Popup
35
35
  ref={ref}
36
36
  className={cn(
37
- "min-w-48 p-[var(--space-2)] bg-background text-foreground border border-border rounded-[var(--radius)] shadow-[0_8px_24px_rgba(0,0,0,0.12)] outline-none text-[length:var(--text-sm)] leading-snug origin-[var(--transform-origin)] transition-[opacity,transform] duration-[140ms] ease-out motion-reduce:transition-none data-[starting-style]:opacity-0 data-[starting-style]:scale-95 data-[ending-style]:opacity-0 data-[ending-style]:scale-95 motion-reduce:data-[starting-style]:scale-100 motion-reduce:data-[ending-style]:scale-100 focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2",
37
+ "min-w-48 p-[var(--space-2)] bg-background text-foreground border border-border rounded-[var(--radius)] shadow-[0_8px_24px_rgba(0,0,0,0.12)] outline-none text-[length:var(--text-sm)] leading-snug origin-[var(--transform-origin)] transition-[opacity,transform] duration-[140ms] ease-out motion-reduce:transition-none data-[starting-style]:opacity-0 data-[starting-style]:scale-95 data-[ending-style]:opacity-0 data-[ending-style]:scale-95 motion-reduce:data-[starting-style]:scale-100 motion-reduce:data-[ending-style]:scale-100 focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2",
38
38
  className,
39
39
  )}
40
40
  {...props}
@@ -30,7 +30,7 @@
30
30
  }
31
31
 
32
32
  .sh-ui-popover__content:focus-visible {
33
- outline: var(--border-width-strong) solid var(--foreground);
33
+ outline: var(--border-width-strong) solid var(--ring);
34
34
  outline-offset: 2px;
35
35
  }
36
36
 
@@ -30,7 +30,7 @@
30
30
  }
31
31
 
32
32
  .popover__content:focus-visible {
33
- outline: var(--border-width-strong) solid var(--foreground);
33
+ outline: var(--border-width-strong) solid var(--ring);
34
34
  outline-offset: 2px;
35
35
  }
36
36
 
@@ -16,7 +16,7 @@ export const Radio = React.forwardRef<HTMLElement, RadioProps>(
16
16
  <BaseRadio.Root
17
17
  ref={ref}
18
18
  className={cn(
19
- "inline-flex items-center justify-center w-[1.125rem] h-[1.125rem] border border-border-strong rounded-full bg-background cursor-pointer shrink-0 transition-[border-color] duration-[var(--duration-fast)] hover:not-data-[disabled]:border-foreground focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 data-[checked]:border-primary data-[disabled]:opacity-[var(--opacity-disabled)] data-[disabled]:cursor-not-allowed motion-reduce:transition-none [@media(hover:none)_and_(pointer:coarse)]:w-5 [@media(hover:none)_and_(pointer:coarse)]:h-5",
19
+ "inline-flex items-center justify-center w-[1.125rem] h-[1.125rem] border border-border-strong rounded-full bg-background cursor-pointer shrink-0 transition-[border-color] duration-[var(--duration-fast)] hover:not-data-[disabled]:border-foreground focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 data-[checked]:border-primary data-[disabled]:opacity-[var(--opacity-disabled)] data-[disabled]:cursor-not-allowed motion-reduce:transition-none [@media(hover:none)_and_(pointer:coarse)]:w-5 [@media(hover:none)_and_(pointer:coarse)]:h-5",
20
20
  className,
21
21
  )}
22
22
  {...props}
@@ -20,7 +20,7 @@
20
20
  }
21
21
 
22
22
  .sh-ui-radio:focus-visible {
23
- outline: var(--border-width-strong) solid var(--foreground);
23
+ outline: var(--border-width-strong) solid var(--ring);
24
24
  outline-offset: 2px;
25
25
  }
26
26
 
@@ -20,7 +20,7 @@
20
20
  }
21
21
 
22
22
  .radio:focus-visible {
23
- outline: var(--border-width-strong) solid var(--foreground);
23
+ outline: var(--border-width-strong) solid var(--ring);
24
24
  outline-offset: 2px;
25
25
  }
26
26
 
@@ -67,7 +67,7 @@ export function RichTextEditor({
67
67
  return (
68
68
  <div
69
69
  className={cn(
70
- "sh-ui-rte flex flex-col border border-border rounded-[var(--radius)] bg-background overflow-hidden transition-[border-color] duration-[var(--duration-fast)] focus-within:border-foreground focus-within:outline-[length:var(--border-width-strong)] focus-within:outline-foreground focus-within:outline-offset-2 data-[readonly]:bg-background-subtle motion-reduce:transition-none",
70
+ "sh-ui-rte flex flex-col border border-border rounded-[var(--radius)] bg-background overflow-hidden transition-[border-color] duration-[var(--duration-fast)] focus-within:border-foreground focus-within:outline-[length:var(--border-width-strong)] focus-within:outline-ring focus-within:outline-offset-2 data-[readonly]:bg-background-subtle motion-reduce:transition-none",
71
71
  className,
72
72
  )}
73
73
  data-readonly={readOnly || undefined}
@@ -157,7 +157,7 @@ function ToolbarButton({ editor, label, icon, isActive, canRun, run, disabled }:
157
157
  <button
158
158
  type="button"
159
159
  className={cn(
160
- "inline-flex items-center justify-center w-7 h-7 p-0 bg-transparent text-foreground-muted border border-transparent rounded-[calc(var(--radius)-2px)] cursor-pointer transition-[color,background-color,border-color] duration-[var(--duration-fast)] hover:not-disabled:text-foreground hover:not-disabled:bg-background hover:not-disabled:border-border focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-1 disabled:opacity-50 disabled:cursor-not-allowed motion-reduce:transition-none",
160
+ "inline-flex items-center justify-center w-7 h-7 p-0 bg-transparent text-foreground-muted border border-transparent rounded-[calc(var(--radius)-2px)] cursor-pointer transition-[color,background-color,border-color] duration-[var(--duration-fast)] hover:not-disabled:text-foreground hover:not-disabled:bg-background hover:not-disabled:border-border focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-1 disabled:opacity-50 disabled:cursor-not-allowed motion-reduce:transition-none",
161
161
  isActive && "text-foreground bg-background border-border-strong",
162
162
  )}
163
163
  aria-label={label}
@@ -9,7 +9,7 @@
9
9
  }
10
10
  .sh-ui-rte:focus-within {
11
11
  border-color: var(--foreground);
12
- outline: var(--border-width-strong) solid var(--foreground);
12
+ outline: var(--border-width-strong) solid var(--ring);
13
13
  outline-offset: 2px;
14
14
  }
15
15
  .sh-ui-rte[data-readonly] {
@@ -50,7 +50,7 @@
50
50
  border-color: var(--border);
51
51
  }
52
52
  .sh-ui-rte__btn:focus-visible {
53
- outline: var(--border-width-strong) solid var(--foreground);
53
+ outline: var(--border-width-strong) solid var(--ring);
54
54
  outline-offset: 1px;
55
55
  }
56
56
  .sh-ui-rte__btn.is-active {
@@ -9,7 +9,7 @@
9
9
  }
10
10
  .rte:focus-within {
11
11
  border-color: var(--foreground);
12
- outline: var(--border-width-strong) solid var(--foreground);
12
+ outline: var(--border-width-strong) solid var(--ring);
13
13
  outline-offset: 2px;
14
14
  }
15
15
  .rte[data-readonly] {
@@ -50,7 +50,7 @@
50
50
  border-color: var(--border);
51
51
  }
52
52
  .rte__btn:focus-visible {
53
- outline: var(--border-width-strong) solid var(--foreground);
53
+ outline: var(--border-width-strong) solid var(--ring);
54
54
  outline-offset: 1px;
55
55
  }
56
56
  .rte__btn.is-active {
@@ -30,7 +30,7 @@ export const SelectTrigger = React.forwardRef<
30
30
  <BaseSelect.Trigger
31
31
  ref={ref}
32
32
  className={cn(
33
- "inline-flex items-center justify-between gap-[var(--space-2)] min-w-40 h-[var(--control-md)] px-[var(--space-3)] bg-background text-foreground border border-border rounded-[var(--radius)] text-[length:var(--text-sm)] leading-none cursor-pointer transition-[border-color,background-color] duration-[var(--duration-fast)] select-none hover:not-disabled:border-border-strong focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-foreground focus-visible:outline-offset-2 data-[popup-open]:border-border-strong disabled:opacity-[var(--opacity-disabled)] disabled:pointer-events-none",
33
+ "inline-flex items-center justify-between gap-[var(--space-2)] min-w-40 h-[var(--control-md)] px-[var(--space-3)] bg-background text-foreground border border-border rounded-[var(--radius)] text-[length:var(--text-sm)] leading-none cursor-pointer transition-[border-color,background-color] duration-[var(--duration-fast)] select-none hover:not-disabled:border-border-strong focus-visible:outline-[length:var(--border-width-strong)] focus-visible:outline-ring focus-visible:outline-offset-2 data-[popup-open]:border-border-strong disabled:opacity-[var(--opacity-disabled)] disabled:pointer-events-none",
34
34
  className,
35
35
  )}
36
36
  {...props}
@@ -23,7 +23,7 @@
23
23
  }
24
24
 
25
25
  .sh-ui-select__trigger:focus-visible {
26
- outline: var(--border-width-strong) solid var(--foreground);
26
+ outline: var(--border-width-strong) solid var(--ring);
27
27
  outline-offset: 2px;
28
28
  }
29
29
 
@@ -188,6 +188,6 @@
188
188
  color: var(--foreground);
189
189
  }
190
190
  .sh-ui-select__chip-remove:focus-visible {
191
- outline: var(--border-width-strong) solid var(--foreground);
191
+ outline: var(--border-width-strong) solid var(--ring);
192
192
  outline-offset: 1px;
193
193
  }
@@ -23,7 +23,7 @@
23
23
  }
24
24
 
25
25
  .select__trigger:focus-visible {
26
- outline: var(--border-width-strong) solid var(--foreground);
26
+ outline: var(--border-width-strong) solid var(--ring);
27
27
  outline-offset: 2px;
28
28
  }
29
29
 
@@ -188,6 +188,6 @@
188
188
  color: var(--foreground);
189
189
  }
190
190
  .select__chip-remove:focus-visible {
191
- outline: var(--border-width-strong) solid var(--foreground);
191
+ outline: var(--border-width-strong) solid var(--ring);
192
192
  outline-offset: 1px;
193
193
  }
@@ -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
  }
@@ -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
  >